利用squid实现反向代理(同时具备内网代理)

转载 2007年09月13日 01:06:00
原贴:http://www.cnfug.org/journal/systems/2004/000079.html

利用squid实现反向代理(同时具备内网代理)

Matthew(黑夜编码人) < matthew at cnfug.org >

我的站点上的所有文件都是静态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,你会发现从外网访问你的网站的速度明显比以前快了很多,而且也支持虚拟主机。

网友评论  以下本论与CNFUG(China FreeBSD User Group)立场无关
网友:skylove 发表时间:2004年07月09日

如果把squid开在80,apache开到另一个端口。。。是不是能少走一次??
client ------> ng0:80 ------> 127.0.0.1:80 (这里squid 监听ng0 的80端口,apache监听127.0.0.1的80端口),这样的话理论上节约一个步骤出来??

网友:Matthew 发表时间:2004年07月09日

是的,如果只对外代理是可以的,但如果要对内代理就的话就需要相应的修改ipfilter的rdr规则。

我也说几句




推荐给好友

  


文章下载

本功能正在开发中,目前不能使用,敬请原谅。

√ 期刊在线投稿: http://www.lstv.net.cn/journal/contribute.html

√ 本文打印于《CNFUG期刊》,欢迎访问 http://www.cnfug.org 获取更多技术文章。

<script type="text/javascript"><!-- google_ad_client = "pub-7874063323015706"; google_ad_width = 728; google_ad_height = 90; google_ad_format = "728x90_as"; google_ad_type = "text_image"; google_ad_channel = ""; google_color_border = "CCCCCC"; google_color_bg = "FFFFFF"; google_color_link = "0066CC"; google_color_text = "000000"; google_color_url = "008000"; //--> </script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"> </script> <iframe width="728" scrolling="no" height="90" frameborder="0" name="google_ads_frame" src="http://pagead2.googlesyndication.com/pagead/ads?client=ca-pub-7874063323015706&amp;dt=1189615971845&amp;lmt=1189615970&amp;format=728x90_as&amp;output=html&amp;correlator=1189615971845&amp;url=http%3A%2F%2Fwww.cnfug.org%2Fjournal%2Fsystems%2F2004%2F000079.html&amp;color_bg=FFFFFF&amp;color_text=000000&amp;color_link=0066CC&amp;color_url=008000&amp;color_border=CCCCCC&amp;ad_type=text_image&amp;ref=http%3A%2F%2Fwww.google.cn%2Fsearch%3Fcomplete%3D1%26hl%3Dzh-CN%26ie%3DGB2312%26q%3Dsquid%2B%25B7%25B4%25CF%25F2%25B4%25FA%25C0%25ED%26btnG%3DGoogle%2B%25CB%25D1%25CB%25F7%26meta%3D%26aq%3Dt%26oq%3Dsquid%2B&amp;cc=100&amp;ga_vid=470891839.1189615972&amp;ga_sid=1189615972&amp;ga_hid=234907000&amp;flash=9&amp;u_h=800&amp;u_w=1280&amp;u_ah=776&amp;u_aw=1280&amp;u_cd=24&amp;u_tz=480&amp;u_his=1&amp;u_nplug=2&amp;u_nmime=3" marginwidth="0" marginheight="0" vspace="0" hspace="0" allowtransparency="true"></iframe> 

相关文章推荐

杯具。

怎么账号被封了啊,CSDN搞什么东西哈

在AutoCAD中使用Python——Through the Interface

原文:Using IronPython with AutoCAD 我已经使用过Python一段时间了,现在随着IronPython2.0的发布(现在为2.7.4版,CC注)似乎已经到了开始尝试应用到A...

Through the Interface-AutoCAD项目的开发语言选择

原文:Choosing the programming language to use for an AutoCAD development project 一位意大利的开发者给我提出了这样一个...

使用反向代理(Nginx)和隧道转发(SSH)实现内网端口映射

使用反向代理(Nginx)和隧道转发(SSH)实现内网端口映射

apache实现反向代理 实现阿里云oss走内网

apache实现反向代理

Squid 反向代理配置

  • 2011-08-09 22:27
  • 26KB
  • 下载

利用squid反向代理提高网站性能

本文在介绍 squid 反向代理的工作原理的基础上,指出反向代理技术在提高网站访问速度,增强网站可用性、安全性方面有很好的用途。作者在具体的实验环境下,利用 DNS 轮询和 Squid 反向代理技术,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)