天下网吧 >> 网吧天地 >> 网吧技术 >> 网吧系统 >> 正文

Squid实现反向代理并且具备内网代理

2008-4-8赛迪网佚名

  我的站点上的所有文件都是静态html,为了进一步的加快网页速度,于是使用squid实现反向代理缓存功能。

  @ 安装squid

  为了偷懒就直接使用ports安装,因为我将所有的服务器系统都安装在/s分区中,所以设置了PREFIX为/s/squid

  # cd /usr/ports/www/squid

  # setenv PREFIX /s/squid

  # make install clean

  安装完成后编辑/s/squid/etc/squid/squid.conf,我的配置内容如下:

  ########## Base control ##########

  cache_mgr webmaster

  cache_effective_user squid

  cache_effective_group squid

  visible_hostname sleepcat.3322.org

  http_port 127.0.0.1:3128

  icp_port 0

  cache_dir ufs /usr/cache 300 16 256

  cache_access_log /dev/null

  cache_log /dev/null

  cache_store_log /dev/null

  error_directory /s/squid/etc/squid/errors/Simplify_Chinese

  icon_directory /s/squid/etc/squid/icons

  mime_table /s/squid/etc/squid/mime.conf

  coredump_dir /s/squid/squid/cache

  pid_filename /s/squid/squid/logs/squid.pid

  hosts_file /etc/hosts

  unlinkd_program /s/squid/libexec/squid/unlinkd

  ########## Performance control ##########

  cache_mem 8 MB

  cache_swap_low 90

  cache_swap_high 95

  maximum_object_size 4096 KB

  minimum_object_size 0 KB

  maximum_object_size_in_memory 8 KB

  ipcache_size 1024

  ipcache_low 90

  ipcache_high 95

  fqdncache_size 1024

  cache_replacement_policy lru

  memory_replacement_policy lru

  emulate_httpd_log off

  log_ip_on_direct on

  log_mime_hdrs off

  dns_timeout 2 minutes

  request_header_max_size 10 KB

  request_body_max_size 0 KB

  refresh_pattern ^ftp: 1440 20% 10080

  refresh_pattern ^gopher: 1440 0% 1440

  refresh_pattern . 0 20% 4320

  negative_ttl 5 minutes

  positive_dns_ttl 6 hours

  negative_dns_ttl 1 minute

  connect_timeout 1 minute

  read_timeout 15 minutes

  request_timeout 5 minutes

  client_lifetime 1 day

  half_closed_clients on

  maximum_single_addr_tries 1

  uri_whitespace strip

  ie_refresh off

  ########## Access control ############

  acl all src 0.0.0.0/0.0.0.0

  http_access allow all

  http_reply_access allow all

  hierarchy_stoplist cgi-bin ?

  ########## Accelator control ############

  httpd_accel_host virtual

  httpd_accel_port 80

  httpd_accel_with_proxy on

  httpd_accel_uses_host_header on

  ########## Misc control ###########

  ftp_user Squid@

  ftp_list_width 32

  ftp_passive on

  ftp_sanitycheck on

  初始化cache

  # /s/squid/sbin/squid -z

  启动squid

  # /s/squid/etc/rc.d/squid.sh start

  @ 设置apache

  因为要对外部实现反向透明代理,所以apache不能再在外网IP的80端口服务,我将它设置到127.0.0.1的80端口,修改httpd.conf中的Listen为:

  Listen 127.0.0.1:80

  刷新apache配置:

  # apachectl restart

  @ 重定向外网IP的80端口访问

  我使用 mpd进行PPPoE拨号 ,所以外网接口为ng0,将所有发往ng0上的80端口请求转发到127.0.0.1的3128端口上,即转发到squid的服务端口。转发规则如下:

  rdr ng0 0.0.0.0/0 port 80 -> 127.0.0.1 port 3128

  同时为了使rdr规则转换后的包能通过防火墙,增加如下ipfilter过滤规则:

  pass in quick on ng0 proto tcp from any to 127.0.0.1 port 3128 keep state

  @ 设置/etc/hosts文件

  现在我们已经实现下面的功能:

  client ------> ng0:80 ------> 127.0.0.1:3128

  接下来就要使squid访问真正的服务以实现反向代理缓存。刚才我已经将apache设置到在127.0.0.1:80端口监听,现在只要让squid访问127.0.0.1:80便可,由于我们在squid的配置文件中设置了hosts文件的位置为/etc/hosts,所以我们只要在hosts文件中设置所有我们的WWW主机(包括虚拟主机)指向127.0.0.1便可。

  127.0.0.1 matthew.3322.org sleepcat.3322.org mirrors.2288.org

  同时请确保你的主机搜索顺序为 file bind,如果不是,请执行以下命令:

  # echo "file" > /etc/host.conf

  # echo "bind" >> /etc/host.conf"

  现在整个流程如下:

  client ------> ng0:80 ------> 127.0.0.1:3128 -------> 127.0.0.1:80

  127.0.0.1:80 ----------> 127.0.0.1:3128 ----------> ng0:80 ----------> client

  现在反向代理已经建成,刷新ipfilter和ipnat规则,启动squid,你会发现从外网访问你的网站的速度明显比以前快了很多,而且也支持虚拟主机。

欢迎访问最专业的网吧论坛,无盘论坛,网吧经营,网咖管理,网吧专业论坛https://bbs.txwb.com

关注天下网吧微信,了解网吧网咖经营管理,安装维护:


本文来源:赛迪网 作者:佚名

声明
本文来源地址:0
声明:本站所发表的文章、评论及图片仅代表作者本人观点,与本站立场无关。若文章侵犯了您的相关权益,请及时与我们联系,我们会及时处理,感谢您对本站的支持!联系Email:support@txwb.com.,本站所有有注明来源为天下网吧或天下网吧论坛的原创作品,各位转载时请注明来源链接!
天下网吧·网吧天下
  • 本周热门
  • 本月热门
  • 阅读排行