一.反向代理的概念
什么是反向代理呢?其实,反向代理也就是通常所说的WEB服务器加速,它是一种通过在繁忙的WEB服务器和Internet之间增加一个高速的
什么是反向代理呢?其实,反向代理也就是通常所说的WEB服务器加速,它是一种通过在繁忙的WEB服务器和Internet之间增加一个高速的
WEB缓冲服务器(即:WEB反向代理服务器)来降低实际的WEB服务器的负载。典型的结构如下图所示:
(这也是反向代理名称的由来)。实施反向代理(如上图所示),只要将Reverse Proxy Cache设备放置在一台或多台Web服务器前端即可。当
互联网用户访问某个WEB服务器时,通过DNS服务器解析后的IP地址是Reverse Proxy Server的IP地址,而非原始Web服务器的IP地址,这时
Reverse Proxy Server设备充当Web服务器,浏览器可以与它连接,无需再直接与Web服务器相连。因此,大量Web服务工作量被卸载到反向代理
服务上。不但能够防止外部网主机直接和web服务器直接通信带来的安全隐患,而且能够很大程度上减轻web服务器的负担,提高访问速度。
二.反向代理工作原理
反向代理服务器位于本地WEB服务器和Internet之间,如下图所示:
反向代理服务器位于本地WEB服务器和Internet之间,如下图所示:
服务器的域名都指向反向代理服务器)。由反向代理服务器处理器请求。反向代理一般只缓存可缓冲的数据(比如html网页和图片等),而一
些CGI脚本程序或者ASP之类的程序不缓存。它根据从WEB服务器返回的HTTP头标记来缓冲静态页面。
以上来自互联网
三.squid做反向代理
1.安装
注:如果系统是redhat 9,需要安装epoll的库文件(epoll有效的降低系统的I/0瓶颈,资源占用率)
注:如果系统是redhat 9,需要安装epoll的库文件(epoll有效的降低系统的I/0瓶颈,资源占用率)
wget [url]http://www.squid-cache.org/Versions/v3/3.0/squid-3.0.STABLE2.tar.gz [/url]
为了安全起见,建立squid运行的用户及组
useradd squid -M -c "Squid user" -d /dev/null -s /sbin/nologin
tar zxvf squid-3.0.STABLE2.tar.gz
cd squid-3.0.STABLE2
./configure --prefix=/usr/local/squid3 --disable-carp --with-aufs-threads=32 --with-pthreads --enable-storeio='ufs,aufs,coss,null' --enable-disk-io='AIO,Blocking' --enable-removal-policies='heap,lru'
--disable-wccp --enable-kill-parent-hack --disable-snmp --disable-poll --disable-select --enable-auth=basic --with-aio
--disable-ident-lookup --with-filedescriptors=65536
为了安全起见,建立squid运行的用户及组
useradd squid -M -c "Squid user" -d /dev/null -s /sbin/nologin
tar zxvf squid-3.0.STABLE2.tar.gz
cd squid-3.0.STABLE2
./configure --prefix=/usr/local/squid3 --disable-carp --with-aufs-threads=32 --with-pthreads --enable-storeio='ufs,aufs,coss,null' --enable-disk-io='AIO,Blocking' --enable-removal-policies='heap,lru'
--disable-wccp --enable-kill-parent-hack --disable-snmp --disable-poll --disable-select --enable-auth=basic --with-aio
--disable-ident-lookup --with-filedescriptors=65536
编译参数:
--prefix=/usr/local/squid3 :指定安装路径 为便于管理
--enable-poll :提升性能
--enable-snmp :此选项可以让MRTG使用SNMP协议对服务器的流量状态进行监测,因此必须选择此项,使Squid
支持SNMP接口。
--enable-storeio=ufs,null #使用的文件系统通常是默认的ufs,不过如果想要做一个不缓存任何文件的代理
服务器,就需要加上null文件系统。
其它的参数等待大家来解释。HOHO ~
--prefix=/usr/local/squid3 :指定安装路径 为便于管理
--enable-poll :提升性能
--enable-snmp :此选项可以让MRTG使用SNMP协议对服务器的流量状态进行监测,因此必须选择此项,使Squid
支持SNMP接口。
--enable-storeio=ufs,null #使用的文件系统通常是默认的ufs,不过如果想要做一个不缓存任何文件的代理
服务器,就需要加上null文件系统。
其它的参数等待大家来解释。HOHO ~
make;make install
安装完毕。
安装完毕。
2.配置
注意 :squid 的配置文件在:/usr/local/squid3/etc/squid.conf
这里是最重要的,也是最难的。
这里是最重要的,也是最难的。
http_port 80 选项 http_port 指定squid监听HTTP请求的端口,一般都设置成80端口,这样使用户感觉不到反向代理的存在,就像访问真正
的WEB服务器一样。
的WEB服务器一样。
cache_mem 128 MB 共享内存大小(squid在提供服务的时候所使用的内存)
maximum_object_size_in_memory 512 KB 最大内存缓存OBJECT值~如果超过则不再内存中缓存~而存入IO中!
memory_replacement_policy lru 替换机制 (lru叫做 最近不常用的单元 unit一般就是常说的object 也就是当cache中的内容比如内存或硬盘达到上限时的 那么就需要进行数据的换进和换出工作)
cache_dir null /tmp cache_dir存储cache内容也就是object的物理存放点
cache_dir ufs /tmp1 10000 16 256 (/tmp size L1 L2)
100G其中1层目录16个 并且每个1层目录下又有256个2层目录[或者说子目录]
#磁盘缓存的类型和目录,大小,一二级目录的设置,这里磁盘缓存大小是10G
ufs是一种文件存储方式 因为os一般都是从内存获取数据 那么内存的东西必须最后写的硬盘上~
sync 同步的时候用的ufs 那么squid也是一样
ufs一般是同时写入内存和硬盘
注意:size是按照M为单位的也就这个目录中最大存储容量的上限
max_open_disk_fds 0
minimum_object_size 0 KB
maximum_object_size 4096 KB
logformat squid %ts.%03tu %6tr %>a %Ss/%03Hs %<st %rm %ru %un %Sh/%<A %mt
设置access_log中日志存储的格式~
access_log /usr/local/squid3/var/logs/access.log squid
access_log为客户端请求的日志
cache_log /usr/local/squid3/var/logs/cache.log
为squid自身的运行日志
pid_filename /usr/local/squid3/var/logs/squid.pid
此三项是设置PID和日志文件位置
cache_store_log none 不记录store.log
visible_hostname liuyu.blog.51cto.com
liuyu.blog.51cto.com 只是标签 有利于检查是否你的那台设备在提供服务!
cache_peer 192.168.1.53 parent 80 0 no-query round-robin max-conn=32 originserver
squid2.5以上都是用的cache_peer来指定所需要代理的服务器的IP 这一点很重要! 由于本例squid 与web 不在同一服务器,因此需要cache_peer 指定相应WEB服务器IP
acl all src 0.0.0.0/0.0.0.0
acl QUERY urlpath_regex cgi-bin .php .cgi .avi .wmv .rm .ram .mpg .mpeg .zip .exe
cache deny QUERY
cache_effective_user squid
cache_effective_group squid
在这里我所以的日志都记录在:/usr/local/squid3/var/logs里
给目录相应的权限
chmod 666 -R /usr/local/squid3/var/logs
chown squid:squid -R /usr/local/squid3/var/logs
保存配置!
3.测试配置是否正确
# /usr/local/squid2/sbin/squid -k parse
# /usr/local/squid2/sbin/squid -k parse
出现ERROR:
WARNING: Cannot write log file: /usr/local/squid3/var/logs/cache.log
/usr/local/squid3/var/logs/cache.log: Permission denied
messages will be sent to 'stderr'.
2008/03/13 12:53:09| Creating Swap Directories
FATAL: Failed to make swap directory /usr/local/squid3/var/cache: (13) Permission denied
很明显权限不对,修改后测试通过!
WARNING: Cannot write log file: /usr/local/squid3/var/logs/cache.log
/usr/local/squid3/var/logs/cache.log: Permission denied
messages will be sent to 'stderr'.
2008/03/13 12:53:09| Creating Swap Directories
FATAL: Failed to make swap directory /usr/local/squid3/var/cache: (13) Permission denied
很明显权限不对,修改后测试通过!
/usr/local/squid2/sbin/squid -z
-z Create swap directories 是创建SWAP目录的! 也就是cache_dir 中的目录
相关的调试命令:
4.启动squid
/usr/local/squid3/sbin/squid -Nd1
ps aux |grep squid 查看是否启动
/usr/local/squid3/sbin/squid -Nd1
ps aux |grep squid 查看是否启动
5.测试访问WEB站点
本机hosts 文件指向squid代理服务器
本机hosts 文件指向squid代理服务器
出现ERROR:
Access Denied.
访问拒绝
Access control configuration prevents your request from being allowed at this time. Please contact your service provider if
you feel this is incorrect.
当前的存取控制设定禁止您的请求被接受,如果您觉得这是错误的,请与您网路服务的提供者联系。
本缓存服务器管理员:webmaster
配置文件设置不对:
acl all src 0.0.0.0/0.0.0.0
http_access allow all
Access Denied.
访问拒绝
Access control configuration prevents your request from being allowed at this time. Please contact your service provider if
you feel this is incorrect.
当前的存取控制设定禁止您的请求被接受,如果您觉得这是错误的,请与您网路服务的提供者联系。
本缓存服务器管理员:webmaster
配置文件设置不对:
acl all src 0.0.0.0/0.0.0.0
http_access allow all
重新测试:OK 一切正常~~~
查看相应日志一切正常。
四. 配置squid 是方便web进行切换,至于dns,mysql,mail切换文章请大家期待~
总体来说,squid 配置不是很麻烦,主要是配置文件里的每一项,对服务器的产生的影响非常的重要。细节决定成功~
本文出自 “seven ” 博客,请务必保留此出处http://liuyu.blog.51cto.com/183345/66507