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

来源:百度文库 编辑:神马文学网 时间:2024/04/29 07:59:29
我的站点上的所有文件都是静态,为了进一步的加快网页速度,于是使用squid实现反向代理缓存功能。

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

    # setenv PREFIX /s/squid
    # make install clean
    安装完成后编辑/s/squid/etc/squid/squid.conf,我的配置内容如下:

    cache_mem 8 MB
    maximum_object_size 4096 KB
    maximum_object_size_in_memory 8 KB
    request_header_max_size 10 KB
    request_body_max_size 0 KB
    http_access allow all
    http_reply_access allow all
    初始化cache
    启动squid
    @ 设置apache
    因为要对外部实现反向透明代理,所以apache不能再在外网IP的80端口服务,我将它设置到127.0.0.1的80端口,修改httpd.conf中的Listen为:

    刷新apache配置:
    # apachectl restart
    @ 重定向外网IP的80端口访问
    我使用 ,所以外网接口为ng0,将所有发往ng0上的80端口请求转发到127.0.0.1的3128端口上,即转发到squid的服务端口。转发规则如下:

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

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

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

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

    现在整个流程如下:
    现在反向代理已经建成,刷新ipfilter和ipnat规则,启动squid,你会发现从外网访问你的网站的速度明显比以前快了很多,而且也支持虚拟主机。
from site : http://club.topsage.com/viewthread.php?tid=40705&highlight=squid