Squid透明代理选项详细说明_wbwssb的空间_百度空间

[据查得资料显示,2.6以前需要以下选项,2.6以后运行以下选项将会报错,具体如下]

2007/12/27 21:07:21| parseConfigFile: line 36 unrecognized: 'httpd_accel_port 80'
2007/12/27 21:07:21| parseConfigFile: line 37 unrecognized: 'httpd_accel_host virtual'
2007/12/27 21:07:21| parseConfigFile: line 38 unrecognized: 'httpd_accel_with_proxy on'
2007/12/27 21:07:21| parseConfigFile: line 39 unrecognized: 'httpd_accel_single_host off'
2007/12/27 21:07:21| parseConfigFile: line 40 unrecognized: 'httpd_accel_uses_host_header on'

说明:
1.http_port 3128
在本例中,我们假设squid的HTTP监听端口为3128,即squid缺省设置值。然后,把所有来自于客户端web请求的包(即目标端口为80)重定向到3128端口。
2.httpd_accel_host virtual
httpd_accel_port 80
这两个选项本来是用来定义squid加速模式的。在这里我们用virtual来指定为虚拟主机模式。80端口为要加速的请求端口。采用这种模式时,squid就取消了缓存及ICP功能,假如你需要这些功能,这必须设置httpd_accel_with_proxy选项。
3.httpd_accel_with_proxy on
该选项在透明代理模式下是必须设置成on的。在该模式下,squid既是web请求的加速器,又是缓存代理服务器。
4.httpd_accel_uses_host_header on
在透明代理模式下,如果你想让你代理服务器的缓存功能正确工作的话,你必须将该选项设为on。设为on时,squid会把存储的对象加上主机名而不是ip地址作为索引。这一点在你想建立代理服务器阵列时显得尤为重要。

1. Squid反向代理单个后台WEB服务器

A、如果WEB服务器和反向代理服务器是两台单独的机器(一般的反向代理应该有两块网卡分别连接了内外部网络)。那么,应该修改下面的内容来设置反向代理服务。

  1. http_port 80 # squid监听的端口
  2. httpd_accel_host 192.168.0.100 # 内部WEB服务器的IP地址
  3. httpd_accel_port 80 # WEB服务器的IP地址
  4. httpd_accel_single_host on # 转发为缓冲的请求到一台单独的机器
  5. httpd_accel_with_proxy on #
  6. httpd_accel_uses_host_header off

B、如果WEB服务器和反向代理服务器是同一台机器。那么,应该设置WEB服务器的监听端口为非80端口(比如:81端口)。要修改的内容如下:

  1. http_port 80 # squid监听的端口
  2. httpd_accel_host localhost # 内部WEB服务器的IP地址
  3. httpd_accel_port 81 # WEB服务器的IP地址
  4. httpd_accel_single_host on # 转发为缓冲的请求到一台单独的机器
  5. httpd_accel_with_proxy on #
  6. httpd_accel_uses_host_header off

下面解释一下配置指令。

选项 http_port 指定squid监听HTTP请求的端口,一般都设置成80端口,这样使用户感觉不到反向代理的存在,就像访问真正的WEB服务器一样。

选项httpd_accel_host 和 httpd_accel_port 指定WEB服务器的IP地址和端口号,可以根据自己的WEB服务器的实际情况而定。

选项httpd_accel_single_host 为on 时,squid被设置成仅对单一的web服务器作反向代理。不考虑HTTP头信息,Squid转发所有的为被缓冲的页面请求到这个web服务器。如果squid需要做多个web服务器反向代理,必须将此选项设置为off,并且使用转向器或者DNS去映射请求到合适的后台WEB服务器。

如果希望squid既作反向代理服务器又作本地机器的上网代理,需要将httpd_accel_with_proxy 改为 on,默认情况下是off

在HTTP协议1.1中,HTTP请求包括一个主机头信息,指定URL的主机名或者主机的IP地址。这个选项可以用来完成多个后台WEB服务器的反向代理功能。

2. Squid反向代理多个后台WEB服务器

我们可以用Squid反向代理多个后台WEB服务器。例如:我们可以配置squid同时反向代理www.xxx.com, www.yyy.com, www.zzz.com三个后台WEB服务器,

Squid的配置如下:

  1. httpd_accel_host virtual
  2. httpd_accel_port 80
  3. httpd_accel_single_host off
  4. httpd_accel_uses_host_header on

注意:编译Squid时需xxInternal DNS选项: --disable-internal-dns

然后设置设置反响代理需要的域名解析(加入hosts)如下:


  1. www.xxx.com 111.222.333.444
  2. www.yyy.com 111.222.333.444
  3. www.zzz.com 111.222.333.444

使三个域名都指向反向代理服务器的IP地址111.222.333.444。

下面设置反向代理所需要的DNS入口信息(即设置内部DNS,仅仅是squid在内部使用,Internet用户不可见)。有两种方法可以设置内部DNS,使用内部DNS服务器来解析或者使用/etc/hosts文件来实现。

使用内部DNS服务器的资源记录如下:

  1. www.xxx.com IN A 192.168.0.101
  2. www.yyy.com IN A 192.168.0.102
  3. www.zzz.com IN A 192.168.0.103

如果使用/etc/hosts文件来实现内部DNS(编译时应使用disable internal dns选项),编辑/etc/hosts文件添加如下条目:

  1. 192.168.0.101 www.xxx.com
  2. 192.168.0.102 www.yyy.com
  3. 192.168.0.103 www.zzz.com

在局域网通过透明代理访问外部的web服务器时,在web服务器端,通过header HTTP_X_FORWARDED_FOR 可以知道代理服务器的服务器名以及端口,通过HTTP_VIA可以知道客户的内部ip,这会带来一些安全问题,并且某些论坛会发现用的是代理访问,怎么让squid隐藏这些信息呢.
通过研究squid的源代码,发现在/etc/squid/squid.conf中添加2行:

要去掉其他的header,也可以照此操作

郑重声明:资讯 【Squid透明代理选项详细说明_wbwssb的空间_百度空间】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——