linux之家
linux之家-让学习更轻松

你的位置:首页>>linux服务器技巧>>Squid实现反向代理并且具备内网代理

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

发表时间:2007-9-23 上午 12:11:37浏览次数:

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

为了偷懒就直接使用ports安装,Squid实现反向代理因为我将所有的服务器系统都安装在/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端口访问

Squid实现反向代理并且具备内网代理我使用 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,你会发现从外网访问你的网站的速度明显比以前快了很多,而且也支持虚拟主机。

读者体会
暂无回复
姓名:
评论内容:
     
热点导读
Squid实现反向代理并且
Linux操作系统下SAM
高效配置Linux代理服务
用VSFTPD搭建FTP服
sendmail+squi
Ubuntu Linux上
Linux系统上把PHP编
Red Hat Linux
Linux系统 2.4和2
让远程Windows系统访
Linux操作系统文件链接
如何将Linux系统的服务
Fedora Linux系
Google推出Linux
教你如何制作软盘版的 Li
阻碍桌面Linux发展的主
Linux操作系统如何设置
如何在红帽企业Linux下
设置Linux的服务自动启
Linux系统下设置用户登
Linux操作系统下设置N
Linux操作系统个性化配
Ubuntu中安装Linu
在Linux操作系统下设置
在Linux桌面上 随意使
Ubuntu6.0.6下的
详细讲解Linux系统下A
Linux攻略 DNS服务
Linux操作系统上摄像头
Linux安装不求人 无需
Copyright 2006-2007 linux77.com Inc. All Rights Reserved
Emai:skyzznj@126.com