WordPress中使用Nginx的fastcgi_cache

纯分享,Wordpress中有很多缓存类的插件,博主这边已经很久没使用过任何缓存插件了。前段时间更新了系统版本,以及wordpress版本也已经更新到最新的4.4上面。每次更新都是个蛋碎的事情,一定要修改一些代码才觉得自在的强迫症。最近折腾博客的频率又大了些,下面就分享下Nginx中如何利用fastcgi_cache缓存模块来缓存wordpress博客。 继续阅读WordPress中使用Nginx的fastcgi_cache

WordPress4.1自带Twenty Fifteen主题禁用谷歌字体

wordpress4.1自带Twenty Fifteen主题感觉杠杠的。记得之前也在用wordpress自带主题twenty twelve。也可以使用同一个方法来禁用谷歌字体。自带的主题就可以不再加载谷歌字体导致wordpress打开很慢了。方法如下:

打开主题 functions.php文件。找到 ‘Register Google fonts’字样,如下图:

reset functions register off

这样之后,自带的主题就可以不再加载谷歌字体导致wordpress打开很慢了。不知道之前的几个自带主题有没有这样做,但是自带的twenty twelve就是可以的。

PS:  Wordpress 4.1自带的这个主题功能也多了很多。感觉不错。

PHP5.5.0以后的版本使用自带Opcache加速PHP

使用腾讯云服务器已经有一段时间了。购买的是腾讯云服务器系统是CentOS6.3版本的Linux发行版。前段时间还一直折腾这HHVM—->来自Facebook开源开发的PHP虚拟机。可惜的是一直没有个结果出来,如今,看来也不用去折腾它了。今天在PHP服务器上加载了Opcache加速模块。感觉良好。经过站长综合SEO查询可以检测出现下的响应时间大大提升了。从之前的400多ms到现在的180多ms左右。

小站程序直接使用Nginx是没有错的,Apache消耗内存太大了,根本不够折腾滴。对于Nginx的fastcgi_cache一直没有解决,不好使。动态页面还是不要缓存来得实在。下面来说下在PHP5.5.0以后版本的PHP启用Opcache加速。

PHP5.5.0以后已经将Opcache集成到源码包里面了。对了,忘记说Opcache是什么来着了。简单说吧,Opcache是PHP的加速器中的一种,由之前的 Zend Optimizer 改名而来,类似国人开发的Xcache差不多,都是讲PHP编译过的结果暂时缓存在内存中以便下次出现同样的请求不重新作PHP编译直接返回结果。

PHP5.5.0以后版本自带Opcache加速器,但默认情况下木有启用。所以编译的使用我们想要启用该PHP加速器就应该添加参数 : –enable-opcache 来制定。对于已经编译安装了PHP5.5.0以上版本但当初又没有启用该加速器的用户可以像PHP添加模块一样编译添加。添加已经编译安装好的PHP模块可参照 这里 。唯一不同的就是opcache的包目录已经自带和在PHP.INI下的配置参数不一样。如下图操作:add opcache mod for your php5

然后再php.ini配置里面添加对应的opcache配置即可:

[opcache]
zend_extension = /data/app/php5/lib/php/extensions/no-debug-zts-20121212/opcache.so
opcache.enable=1
opcache.memory_consumption = 64
opcache.interned_strings_buffer = 8
opcache.max_accelerated_files = 4000
opcache.revalidate_freq = 60
opcache.fast_shutdown = 1
opcache.enable_cli = 1

最后重启你的php-fpm 程序即可。命中率很高滴,很靠谱的:opcache cache hitstest for enable opcache speed

之前使用xcache缓存的测试图:test my site speed only 421ms

已经使用memcache加速wordpress

今晚整出了个用memcache加速wordpress网站来,看右下角吧,回顶部已经有了,用的是百度置顶。很久没打开网站统计了。换了域名就要换统计代码。结果在里面发现了多了个应用中心,包含有:置顶工具/百度推荐/专题推送等等应用,话说就是多加载了一个js可以实现了。挺不错的感觉。
memcached的安装在CentOS6.3下直接用yum安装还是挺简单的,能用就行,重要的是好用。安装了memcached之后还要安装memcache的PHP扩展。这里就说下memcache安装php扩展好了。

安装memcached:yum -y install memcached
安装完成之后直接用 service memcached start 启动即可
检查启动与否可以使用:lsof -n | grep memcached

安装php扩展:

cd /usr/local/src
wget http://pecl.php.net/get/memcache-2.2.7.tgz
tar zxf memcache-2.2.7.tgz
cd memcache-2.2.7
/data/app/php5/bin/phpize
make && make install
正常安装完成后会生成扩展目录的,eg:
/data/app/php5/lib/php/extensions/no-debug-zts-20121212/ 的一串目录路径
添加php加载memcache的库文件:
vi /etc/php.ini
my wordpress site enabled memcache然后重启php-fpm即可加载。检查是否加载可以在phpinfo信息页里搜索是否有memcache扩展。

wordpress添加memcache缓存插件:

下载 WordPress Memcached 缓存插件:http://wordpress.org/extend/plugins/memcached/ ;
WordPress 会自动检查在 wp-content 目录下是否有 object-cache.php 文件,如果有,
直接调用它作为 WordPress 对象缓存机制。(Note:该文件放在目录 wp-content下,不是插件目录)

最后经过测试,速度确实提升了点,经过站长工具的SEO综合查询需要加载 421ms。之前一直都是在500ms-700ms之间的。比起使用wp-super-cache还是相差很远,但我不喜欢使用它来缓存。
test my site speed only 421ms

新年开博之七牛云存储

谈定些,技术知识基本,也是过度,所以,近期都好少有技术性的文章发布。就当我是黔驴技穷吧。移动互联网的飞速发展,你能抓住的有哪些?欢迎大家加入谈论,无私地交流。

新年开博了,开博了,首先祝各位新的一年万事如意,身体健康,马上有钱!大数据,云计算,云存储,移动互联…在这些基础上都能产生各种各样优秀优越的应用。但人的欲望都是无穷的,所以,有了不断的需求就会有不断的供给!作为一个小小的站长,甚至是一个大型网站/大型APP。数据存储是非常重要的,这里不用多说。七牛云存储能提供的正是这些需要的。下面就来谈谈七牛云存储的一些应用。

官方网站:http://www.qiniu.com/

所有产品:

qiniuyun

所谓云存储,技术上还涉及到了CDN,DNS的智能解析,网络存储的方式,这里就不谈及服务器硬件环境。能加速,能称为分布式,都是基于分布在整个互联网上拥有的节点。以用户最近的节点实现快速响应并且快速返回数据。最原始的无非就是CDN了。后来就有了所谓的BGP(边界网关协议)的网络优化,还出现了智能解析。尽可能以用户最佳的路线带宽返回数据。

上面这张图片就是存储在七牛云中的,以其他文章中的图片比较你就会发现这张图片加载的速度有很大的提升,这就是七牛云存储的优势

七牛云对wordpress(互联网主要网站程序)的支持。有wordpress插件由(我爱水煮鱼)开发。貌似可以将整站做成CDN站,实现分布在互联网多个节点,实现快速访问的效果。由于需要备案,无法相试。

作为大数据时代,七牛云有开发者的API。当然我不会写代码。对这个研究甚少,不发表任何意见。

开博顺利,新的一年,希望自己能坚持,马上都有激情。

小试搭建Squid反向代理服务器

好吧,更新个文章,有段时间没写技术博文了。今天就说说squid反向代理这个服务,当然,这是在Linux下配置完成的。说自己没偏见似乎不可能了。大概是相对喜欢Linux而已。但我从不否认Windows Server功能及性能会比Linux差。只是个人爱好哈,不多说。下面说下搭建squid反向代理多个域名,多个web站点的方法。

环境(这个很重要哦)

两台CentOS6.3一台RHEL6.2

网卡信息和DNS记录信息比较多,似乎有点烦,有需要的看清楚就是了。纯属个人喜好和习惯划分的。

DNS Server IP:192.168.2.10 (VMnet2)

Squid Server IP:(双网卡哦,一般代理都是代理Internet的访客吗,内外自己就不必麻烦了)外网(VMnet8‘NAT’模式并不要启用VMware的DHCP分配,即查看信息后手动对应更新为静态IP)192.168.8.113/24,内外(VMnet2)192.168.2.20/24

内部WEB Server IP:192.168.2.30-33/24(VMnet2)对应虚拟主机配置的名称查阅下面DNS配置:

[root@localhost named]# more 2.168.192.zone
$TTL 1D
@       IN SOA  @ rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        MX 5    @
        A       192.168.2.10
        PTR     ns.zwz.com.
20      PTR     mail.zwz.com.
        PTR     pop3.zwz.com.
        PTR     smtp.zwz.com.
        PTR     www.zwz.com.
        PTR     squid.zwz.com.
        PTR     www.wl.com.
30     PTR     ftp.zwz.com.
30     PTR     www1.zwz.com.
31      PTR     www2.zwz.com.
32      PTR     www3.wl.com.
33      PTR     www4.wl.com.
[root@localhost named]#

上面红色字对应的DNS记录全是指向内部WEB服务器的相应站点。蓝色字是指向Squid服务器的,即外网访问的域名。这些是用CNAME方式做的,由于有两个域名,并都是同一个反向区域记录,所以这里就只more出反向解析的配置文件了。正向解析有需要的自个配置哈。

Note:事实上,www.zwz.com和www.wl.com就是申请的公网IP地址了。

从WEB服务器的配置开始吧,下面是Apache虚拟主机相关站点的配置:

NameVirtualHost 192.168.2.30:80
NameVirtualHost 192.168.2.31:80
NameVirtualHost 192.168.2.32:80
NameVirtualHost 192.168.2.33:80
<VirtualHost 192.168.2.30:80>
    ServerAdmin admin@zwz.com
    DocumentRoot /var/www/html/web1
    ServerName www1.zwz.com
    DirectoryIndex index.html index.html.var
    ErrorLog logs/dummy-host.example.com-error_log
    CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>
<VirtualHost 192.168.2.31:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot /var/www/html/web2
    ServerName www2.zwz.com
    DirectoryIndex index.html
    ErrorLog logs/dummy-host.example.com-error_log
    CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>
<VirtualHost 192.168.2.32:80>
    ServerAdmin admin@wl.com
    DocumentRoot /var/www/html/wl1
    ServerName www3.wl.com
    directoryindex index.html
    ErrorLog logs/dummy-host.example.com-error_log
    CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>
<VirtualHost 192.168.2.33:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot /var/www/html/wl2
    ServerName www4.wl.com
    directoryindex index.html
    ErrorLog logs/dummy-host.example.com-error_log
    CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>
[root@localhost html]#

有关Apache虚拟主机的配置这里不多说鸟。

最后是squid反向代理服务器的配置。其实squid的acl还是很强大哈,本人倒也没有深入学习过。但隐隐约约感觉到和微软的ISA有点点相似。结合Linux下的iptables应该也可以实现一个相对简单的局域网内的软件防火墙了。

1.安装squid软件—–本地yum吧。yum install -y squid 即可。

2.配置文件并不多,全在目录/etc/squid/下。而且这里我们都是只需要修改该目录下的squid.conf配置文件即可。话又说回来,该文档中只有squid软件的些许参数,很多都没在该文档中出现。

acl all src 0.0.0.0/0.0.0.0
http_access allow all ##Note:注意该句应该写在默认的的deny all前面哈。acl了,不解析,顺序读取嘛。
cache_log /usr/local/squid/var/logs/cache.log
access_log /usr/local/squid/var/logs/access.log squid
cache_dir ufs /usr/local/squid/var/cache/ 1000 16 256
coredump_dir /var/spool/squid ##不用多说吧,相关日志/缓存等目录的具体路劲。
http_port 80 accel vhost vport ## 配置 squid 为加速模式,并且都是是用虚拟主机的配置。
cache_mem 64 MB ##squid 用于缓存的内存量,由于我是用VMware完成的,而且系统一共才给了265MB,所以也就只给了64MB了。
cache_swap_low 90
cache_swap_high 95
cache_effective_user squid ##指定缓存的有效用户
cache_effective_group squid ##缓存的有效用户组
visible_hostname squid.zwz.com ## 设定 squid 的主机名 , 如无此项 squid 将无法启动,可以任意取。
cache_peer 192.168.2.30 parent 80 0 no-query originserver round-robin name=www1
cache_peer_domain www1 www.zwz.com
cache_peer 192.168.2.31 parent 80 0 no-query originserver round-robin name=www2
cache_peer_domain www2 www.zwz.com
##上面四句的意思是将www.zwz.com这个站点的请求通过RR轮询方式进行请求,如果用户请求的数据本地
##Squid服务器上有,那么就直接返回,否则向web源站点请求数据,然后再返回给用户。从这里看出虾米哦(Cdn吧,嘿!)
cache_peer 192.168.2.32 parent 80 0 no-query originserver round-robin name=www3
cache_peer_domain www3 www.wl.com
cache_peer 192.168.2.33 parent 80 0 no-query originserver round-robin name=www4
cache_peer_domain www4 www.wl.com
##同上四句~

上面配置可以清楚有冲突的acl然后直接添加至该文档的最后面。该配置文件安装后就有,在/etc/squid/目录下有几个是配置文档,还是几个是相对应的存档(带.default的)

好啦。至此,启动相关服务器上的相关服务进行测试呗,我是用物理机修改hosts的方法进行测试的。添加物理机hosts记录对应的squid服务器的NAT网卡IP指向www.zwz.com和www.wl.com即可。hosts文件一般在C:\Windows\System32\Drivers\etc目录下。

Note:不要使用chrom浏览器进行测试。貌似该浏览器自带有种代理请求的东东,其实也就是本软件范围内的缓存,好像还是比较顽固的,用IE或者Firefox测试都行,(我都是用隐私模式浏览滴)。好吧,上图看下:
修改hosts文件进行解析测试

第一次访问www.zwz.com
第一次访问www.zwz.com
刷新访问www.zwz.com
刷新访问www.zwz.com
第一次访问www.wl.com
第一次访问www.wl.com
刷新访问www.wl.com
刷新访问www.wl.com

配置完成,还有些想法哈,目前貌似这东东也不是很流行了捏。但应该也还是用人在使用的。下次倾向于Nginx哪~

再度诠释CDN原理和CDN网络架构

什么是CDN这里就不多说了。请看前面的CDN博文。今天再次讲下CDN,如题。主要是后者——CDN的网络架构 。这里拿Client正常访问WEB服务器来做个比较,看下正常访问过程:

1) 用户向浏览器提供要访问的域名;
2) 通过一连串的DNS解释得到此域名对应的IP地址;
3) 浏览器使用所得到的IP地址,域名的服务主机发出数据访问请求;
4) 浏览器根据域名主机返回的数据显示网页的内容。
通过以上四个步骤,浏览器完成从用户处接收用户要访问的域名到从域名服务主机处获取数据的整个过程。CDN网络是在用户和服务器之间增加Cache层,如何将用户的请求引导到Cache上获得源服务器的数据,主要是通过接管DNS实现,下面让我们看看访问使用CDN缓存后的网站的过程:

1) 用户向浏览器提供要访问的域名;
2) 浏览器调用域名解析库对域名进行解析,由于CDN对域名解析过程进行了调整,所以解析函数库一般得到的是该域名对应的CNAME记录,为了得到实际IP地址,浏览器需要再次对获得的CNAME域名进行解析以得到实际的IP地址;在此过程中,使用的全局负载均衡DNS解析,如根据地理位置信息解析对应的IP地址,使得用户能就近访问。
3) 此次解析得到CDN缓存服务器的IP地址,浏览器在得到实际的IP地址以后,向缓存服务器发出访问请求;
4) 缓存服务器根据浏览器提供的要访问的域名,通过Cache内部专用DNS解析得到此域名的实际IP地址,再由缓存服务器向此实际IP地址提交访问请求;
5) 缓存服务器从实际IP地址得得到内容以后,一方面在本地进行保存,以备以后使用,二方面把获取的数据返回给客户端,完成数据服务过程;
6) 客户端得到由缓存服务器返回的数据以后显示出来并完成整个浏览的数据请求过程。

通过以上的分析我们可以得到,为了实现既要对普通用户透明(即加入缓存以后用户客户端无需进行任何设置,直接使用被加速网站原有的域名即可访问),又要在为指定的网站提供加速服务的同时降低对ICP的影响,只要修改整个访问过程中的域名解析部分,以实现透明的加速服务,下面是CDN网络实现的具体操作过程。
1) 作为ICP,只需要把域名解释权交给CDN运营商,其他方面不需要进行任何的修改;操作时,ICP修改自己域名的解析记录,一般用cname方式指向CDN网络Cache服务器的地址。
2) 作为CDN运营商,首先需要为ICP的域名提供公开的解析,为了实现sortlist,一般是把ICP的域名解释结果指向一个CNAME记录;
3) 当需要进行sorlist时,CDN运营商可以利用DNS对CNAME指向的域名解析过程进行特殊处理,使DNS服务器在接收到客户端请求时可以根据客户端的IP地址,返回相同域名的不同IP地址;
4) 由于从cname获得的IP地址,并且带有hostname信息,请求到达Cache之后,Cache必须知道源服务器的IP地址,所以在CDN运营商内部维护一个内部DNS服务器,用于解释用户所访问的域名的真实IP地址;
5) 在维护内部DNS服务器时,还需要维护一台授权服务器,控制哪些域名可以进行缓存,而哪些又不进行缓存,以免发生开放代理的情况。

CDN网络架构:

CDN网络架构主要由两大部分,分为中心和边缘两部分,中心指CDN网管中心和DNS重定向解析中心,负责全局负载均衡,设备系统安装在管理中心机房,边缘主要指异地节点,CDN分发的载体,主要由Cache和负载均衡器等组成。
当用户访问加入CDN服务的网站时,域名解析请求将最终交给全局负载均衡DNS进行处理。全局负载均衡DNS通过一组预先定义好的策略,将当时最接近用户的节点地址提供给用户,使用户能够得到快速的服务。同时,它还与分布在世界各地的所有CDNC节点保持通信,搜集各节点的通信状态,确保不将用户的请求分配到不可用的CDN节点上,实际上是通过DNS做全局负载均衡。
对于普通的Internet用户来讲,每个CDN节点就相当于一个放置在它周围的WEB。通过全局负载均衡DNS的控制,用户的请求被透明地指向离他最近的节点,节点中CDN服务器会像网站的原始服务器一样,响应用户的请求。由于它离用户更近,因而响应时间必然更快。
每个CDN节点由两部分组成:负载均衡设备和高速缓存服务器
负载均衡设备负责每个节点中各个Cache的负载均衡,保证节点的工作效率;同时,负载均衡设备还负责收集节点与周围环境的信息,保持与全局负载DNS的通信,实现整个系统的负载均衡。
高速缓存服务器(Cache)负责存储客户网站的大量信息,就像一个靠近用户的网站服务器一样响应本地用户的访问请求。
CDN的管理系统是整个系统能够正常运转的保证。它不仅能对系统中的各个子系统和设备进行实时监控,对各种故障产生相应的告警,还可以实时监测到系统中总的流量和各节点的流量,并保存在系统的数据库中,使网管人员能够方便地进行进一步分析。通过完善的网管系统,用户可以对系统配置进行修改。
理论上,最简单的CDN网络有一个负责全局负载均衡的DNS和各节点一台Cache,即可运行。DNS支持根据用户源IP地址解析不同的IP,实现就近访问。为了保证高可用性等,需要监视各节点的流量、健康状况等。一个节点的单台Cache承载数量不够时,才需要多台Cache,多台Cache同时工作,才需要负载均衡器,使Cache群协同工作。

一个虚拟空间搭建多个不同域名站点

上篇博文中介绍了什么是CDN和CDN的工作原理 。下面就介绍下如何做到充分利用虚拟空间无限子域和无限流量这一优点搭建多个不用域名的WEB站点。其实不是什么难的事情。理解清楚CDN的原理。充分利用域名CNAME这个记录。能够实现这一功能的前提就是:

购买的虚拟空间支持无限子域最好也支持无限流量了。

购买的域名能够正常管理域名记录。就这两点就可以实现这一想法了。

下面介绍下实现这一过程的实例:

利用域名 kutea.net购买一个无限流量无限子域的虚拟主机空间。

在虚拟主机空间里面添加001cdn 002cdn 003cdn等等子域,那么在该空间里面就有了001cdn.kutea.net 002cdn.kutea.net 003cdn.kutea.net这样的多个子站点。

上面是第一步,然后回到其他域名管理控制面板。例如域名 abc.com xyz.com 123.com 这些主域名里面管理。添加域名别名记录。使得www.abc.com的别名指向子域记录001cdn.kutea.net   www.xyz.com的别名指向子域记录002cdn.kutea.net 使得www.123.com的别名记录指向子域记录003cdn.kutea.net

OK。就这样可以实现一个好的虚拟空间搭建多个不同域名的站点。原创文章,转载请注明出处,多谢合作!

什么是CDN和CDN的工作原理

之前介绍一篇关于本站WEB架构的博文。那是搭建在OpenShift开源平台上的wordpress站点。下面就介绍下什么是CDN和CDN的工作原理,其实这个原理很有用。很多空间商是支持无限子域和无限流量的。同时虚拟空间质量还不错的话,那么,你就可以利用CDN的原理部分,在同一个主机空间里面搭建多个不用域名的站点了。先说明下这个不是CDN。只是利用空间无限子域和无限流量搭建自己多个不用域名的站点。想了解的可以继续往下看,其他不用多说了。

内容分发网络(CDN)采用智能路由和流量管理技术,及时发现能够给访问者提供最快响应的加速节点,并将访问者的请求导向到该加速节点,由该加速节点提供内容服务。利用内容分发与复制机制,CDN客户不需要改动原来的网站结构,只需修改少量的DNS配置,就可以加速网络的响应速度。当用户访问了使用CDN服务的网站时,DNS域名服务器通过CNAME方式将最终域名请求重定向到CDN系统中的智能DNS负载均衡系统。智能DNS负载均衡系统通过一组预先定义好的策略(如内容类型、地理区域、网络负载状况等),将当时能够最快响应用户的节点地址提供给用户,使用户可以得到快速的服务。同时,它还与分布在不同地点的所有CDN节点保持通信,搜集各节点的健康状态,确保不将用户的请求分配到任何一个已经不可用的节点上。而CDN还具有在网络拥塞和失效情况下,能拥有自适应调整路由的能力。

用户向浏览器提供要访问网站的域名,域名解析的请求被发往网站的DNS域名解析服务器;

由于网站的DNS域名解析服务器对此域名的解析设置了CNAME,请求被指向CDN网络中的智能DNS负载均衡系统;

智能DNS负载均衡系统对域名进行智能解析,将响应速度最快的节点IP返回给用户;

浏览器在得到速度最快节点的IP地址以后,向CDN节点发出访问请求;

由于是第一次访问,CDN节点将回到源站取用户请求的数据并发给用户;

当有其他用户再次访问同样内容时,CDN将直接将数据返回给客户,完成请求/服务过程。

通过以上的分析我们可以看出,CDN服务对网站访问提供加速的同时,可以实现对普通访问用户透明,即加入缓存以后用户客户端无需进行任何设置,直接输入被加速网站原有的域名即可访问。

Web加速,Squid实现反向代理

反向代理工作原理
当用户浏览器发出一个HTTP请求时,通过域名解析将请求定向到反向代理服务器(如果要实现多个WEB服务器的反向代理,需要将多个WEB服
务器的 域名都指向反向代理服务器)。由反向代理服务器处理器请求。反向代理一般只缓存可缓冲的数据(比如html网页和图片等),而一些CGI脚本程序或者 ASP之类的程序不缓存。它根据从WEB服务器返回的HTTP头标记来缓冲静态页面。

使用Squid配置反向代理(HTTP 加速器)
通过squid配置反向代理主要就是配置“squid.conf”这个配置文件。下面以Linux操作系统为例进行介绍,其它版本的在UNIX也同 样适用。在Linux中squid如果是以源代码方式安装的话,这个文件一般在“/usr/local/squid/etc/”目录下。如果是系统自带的 squid,一般配置文件在“/etc/squid/”目录下。
1. Squid反向代理单个后台WEB服务器
如果WEB服务器和反向代理服务器是两台单独的机器(一般的反向代理应该有两块网卡分别连接了内外部网络)。那么,应该修改下面的内容来设置反向代理服务。
http_port 80 # squid监听的端口
httpd_accel_host 172.16.250.250 # 内部WEB服务器的IP地址
httpd_accel_port 80 # WEB服务器的IP地址
httpd_accel_single_host on # 转发为缓冲的请求到一台单独的机器
httpd_accel_with_proxy on #
httpd_accel_uses_host_header off
如果WEB服务器和反向代理服务器是同一台机器。那么,应该设置WEB服务器的监听端口为非80端口(比如:81端口)。要修改的内容如下:
http_port 80 # squid监听的端口
httpd_accel_host localhost # 内部WEB服务器的IP地址
httpd_accel_port 81 # WEB服务器的IP地址
httpd_accel_single_host on # 转发为缓冲的请求到一台单独的机器
httpd_accel_with_proxy on #
httpd_accel_uses_host_header off
下面解释一下配置指令。
http_port 80
选项 http_port 指定squid监听HTTP请求的端口,一般都设置成80端口,这样使用户感觉不到反向代理的存在,就像访问真正的WEB服务器一样。
httpd_accel_host 172.16.250.250 和 httpd_accel_port 80
选项httpd_accel_host 和 httpd_accel_port 指定WEB服务器的IP地址和端口号,可以根据自己的WEB服务器的实际情况而定。
httpd_accel_single_host on
选项httpd_accel_single_host 为on 时,squid被设置成仅对单一的web服务器作反向代理。不考虑HTTP头信息,Squid转发所有的未被缓冲的页面请求到这个web服务器。如果 squid需要做多个web服务器反向代理,必须将此选项设置为off,并且使用转向器或者DNS去映射请求到合适的后台WEB服务器。
httpd_accel_with_proxy on
如果希望squid既作反向代理服务器又作本地机器的上网代理,需要将httpd_accel_with_proxy 改为 on,默认情况下是off
httpd_accel_uses_host_header off
在HTTP协议1.1中,HTTP请求包括一个主机头信息,指定URL的主机名或者主机的IP地址。这个选项可以用来完成多个后台WEB服务器的反向代理功能。
2.Squid反向代理多个后台WEB服务器
我们可以用Squid反向代理多个后台WEB服务器。例如:我们可以配置squid同时反向代理www.abc.com, www.xyz.com, www.kutea.net三个后台WEB服务器。

Squid的配置如下:
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_single_host off
httpd_accel_uses_host_header on
(注意:编译Squid时需激活Internal DNS选项)
然后设置设置反响代理需要的域名解析(Internet用户通过这里解析三个网站的域名)如下:
www.abc.com 202.102.240.74
www.xyz.com 202.102.240.74
www.kutea.net 202.102.240.74
使三个域名都指向反向代理服务器的IP地址202.102.240.74。
下面设置反向代理所需要的DNS入口信息(即设置内部DNS,仅仅是squid在内部使用,Internet用户不可见)。有两种方法可以设置内部DNS,使用内部DNS服务器来解析或者使用/etc/hosts文件来实现。
使用内部DNS服务器的资源记录如下:
www.abc.com IN A 172.16.1.2
www.xyz.com IN A 172.16.1.3
www.kutea.net IN A 172.16.1.4
如果使用/etc/hosts文件来实现内部DNS(编译时应使用disable internal dns选项),编辑/etc/hosts文件添加如下条目:
172.16.1.2 www.abc.com
172.16.1.3 www.xyz.com
172.16.1.4 www.kutea.net
结论
通过上面论述和相关实例,可以看出,反向代理方式不单是一种WEB服务器加速器,而且使也一种对外提供Web发布时使用的有效的防火墙技术,使用它不但能节约紧缺的IP地址资源,加速WEB服务器的访问速度,而且能够保护WEB主机,因此能够适应多种应用场合。