单位新项目用squid作反向代理服务器,这两天看了不少关于squid配置的文档,但是关于squid.conf文件中的http_port参数的一些选项还存在疑问,希望大家能给些帮助。
一般反向代理会有如下配置:http_port 80 accel vhost vport
非常疑惑accel,vhost,vport这三个参数的用途,手册、配置文档以及网络文章都查了,都是那么几句话解释,但我实在看明白,请不要转帖哪些解释了。
我曾经试图在配置文件中去掉accel选项,squid重启后,并没有任何异常,而vhost选项去掉后,网页就无法正常访问了,所以最好可以举例说明这几个参数的用途,譬如干啥用的,加了它起什么作用,不加它有何影响
http://old.squid-cache.org/Doc/Users-Guide/detail/accel.html
http://www.visolve.com/squid/squid26/network.php
仔细看着这两个链接
说一下我的理解吧:
1 如果你不加http_port 80 accel vhost vport 这个配置的话,squid默认就作为一个缓存服务器(cache server, 参考第一个链接),这个时候如果客户端有请求发到了squid,squid起到的是路由功能,把请求转发出去,被真正的web server接收,web server返回响应,当squid接收到响应后,根据响应头决定是否缓存,此时的squid,只是一个cache server。
2 如果你加http_port 80 accel vhost vport 这个配置的话,squid就从一个缓存变成了一个web server(参考第一个链接), 这个时候squid在80端口监听请求,同时和web server的请求端口(vhost vport)绑定,这个时候请求到了squid,squid是不用转发请求的,而是直接要么从缓存中拿数据要么向绑定的端口直接请求数据。另外绑定端口还有一个好处,可以充分利用http 响应头中的到期时间头和etag头。
3 你提到“去掉accel选项,squid重启后,并没有任何异常”,这个参考第二个链接,如果你设置了vhost vport, 默认是具有的(Implies accel)
设定squid为accel加速模式,vhost必须要加.否则将无法将主机头转发至后端服务器,访问时就会出现无法找到主机头的错误
此文章由 http://www.ositren.com 收集整理 ,地址为: http://www.ositren.com/htmls/67447.html