squid是一种高效的的代理服务器和Web缓存服务器,他的发展历史相当悠久,功能也相当完善。除了HTTP外,对于FTP与HTTPS的支援也相当好,在3.0 测试版中也支援了IPv6。老赵也断断续续的折腾过几次,时间跨度很大,所以有必要对之前的做个总结备忘,基于个人能力问题,难免错漏,环境大家指正!部分设定均来源于网络,尤其得到tiger.im老虎同志的大力协助,在此一并致谢。
A服务器反向代理B(web服务器)
首先,我们一起来看看如何使用一台服务器或者VPS反向代理另一台服务器或者另一个服务器上的域名。我们假设用于squid的服务器为A,而真实后端web服务器为B。
首先,在A服务器编译squid,以root账户ssh登陆A,运行下列命令(本文基于CentOS 5.* 32bit)
yum install squid
编译过程很快,如果有安装httpd,可以移除之。
yum remove httpd
接下来是最重要的部分,编辑squid.conf文件(文件位置/etc/squid/),squid.conf配置项目较多,网络上关于常规的设定教程也很多,本文我们主要是记录能使用它反代另一台服务器或者域名,所以,我们仅列出需要修改的前后端地址及域名部分,大家也可以下载老赵随笔提供的配置文件去修改:点击下载squid.conf
cache_peer *.*.*.* parent 80 7 no-query originserver name=www1
cache_peer_domain www1 zrblog.net www.zrblog.net
上面的*.*.*.*换成您的web服务器IP,如果有多个域名,可以自行添加www2,www3……如果反代web服务器上的所有域名,可以删除cache_peer_domain行。
完成后上传,并重载下squid。
service squid reload
设定开机启动squid
chkconfig --level 2345 squid on chkconfig squid on
这样操作后,您可以将B服务器上的域名,解析指向A服务器IP,由A服务器反代最终地址。这种方式简单易行,比如欧洲的服务器便宜,但国内访问速度欠佳,可以给他来个港台日韩的squid前端,缓存后的速度提升还是比较明显的;但缺点是直接用了80端口反代,这台squid服务器再做web服务器就比较麻烦了。
LNMP环境下squid前端nginx后端
这个方式是在同一台服务器操作,在编译lnmp环境的web服务器上使用squid作为前端,nginx后端。
首先,编译lnmp,过程略(本文军哥lnmp一键包基础)
完成后安装squid
yum install squid
删除掉默认的squid配置文件
rm /etc/squid/squid.conf
之后传入上一方式中提供的squid.conf(也可以自行编辑)
在这一种方式中,我们还需要修改配置文件,因为squid做前端占用了80端口,而nginx也是使用80端口,都用80端口肯定是不行的,本文我们修改nginx使用8888端口。先来修改squid.conf文件。
cache_peer 127.0.0.1 parent 8888 7 no-query originserver name=www1
cache_peer_domain www1 zrblog.net www.zrblog.net
上面的127.0.0.1表示反向代理本机后端,端口8888可以自行修改,只要不与系统其他端口冲突即可。
如果需要代理多个,可以继续添加。
接下来,我们还需要修改nginx的配置信息。
vi /usr/local/nginx/conf/nginx.conf
修改端口80为8888
server
{
listen 8888;
如果希望以后添加域名自动使用8888端口,还可以修改vhost.sh文件。
server
{
listen 8888;
server_name
$domain
$moredomainame
;
index index.html index.htm index.php
default
.html
default
.htm
default
.php;
全部完成后,重启下lnmp和squid。
/root/lnmp restart
service squid restart
最后设定squid为开机启动。
chkconfig –level 2345 squid on
chkconfig squid on
这样我们在这台服务器的站点就是squid前端,nginx后端了。