让apache支持.htaccess反向代理

今天上课的时候接连发来几封网站监控警报,一看邮件,是博客挂了,提示陋室博客中断了6小时,到傍晚时候恢复访问。这次中断是在国内(国内用户无法访问),原因不细说了。架设在GAE上的监控显示一切正常:http://monitor.gae.malu.me/

既然有了这次经历那一定得想出个对策,以防今后再次遇到此类问题,好及时恢复国内访问。那么接下来就要用到下面介绍的反向代理技术。

相信搜索引擎过来的,一定已经对反向代理有所了解,本文就不做介绍了,请初次涉及的朋友点击这里:反向代理wiki 下面进入正题:

在常见的我们能申请到的apache虚拟主机中都默认支持了.htaccess文件的配置,在这种主机中只需要将.htaccess文件放入网站根目录,在.htaccess文件中写入:

RewriteEngine On
RewriteBase /
RewriteRule ^(.*)$ http://malu.me/$1 [P]

其中“http://malu.me”为所要代理的目标网站。

但今天我手头上一台VPS中默认并不支持.htaccess文件配置,那么如何启用呢?

首先apache的反向代理,需要模块“mod_proxy”的支持,我们可以通过探针查看:

如果有如上显示,那证明你的apache已经支持proxy代理模块了。接下来还需要一些配置:

编辑文件:vim /etc/httpd/conf/httpd.conf搜索proxy,确认存在如下配置:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so

然后将:

<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>

改为

<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>

此时重启apache:

#/etc/init.d/httpd restart

确保.htaccess在网站根目录下后就可以访问测试了。

怎么,还不行?那你应该是配置了虚拟主机,配置了虚拟主机的话还需要对虚拟主机配置文件专门设置:

<VirtualHost *:80>
………………
<Directory "/XXXX">
Options FollowSymLinks IncludesNOEXEC Indexes
DirectoryIndex index.html  index.php
AllowOverride all
Order Deny,Allow
Allow from all
………………
</Directory>
………………
</VirtualHost>

以上“/XXXX”为网站绝对路径,比如我的配置:

<VirtualHost *:80>
ServerName w1.malu.me
DocumentRoot /var/www/html/w1
</VirtualHost>
<VirtualHost *:80>
<Directory "/var/www/html/w2">
Options FollowSymLinks IncludesNOEXEC Indexes
DirectoryIndex index.html index.php
AllowOverride All
Order Deny,Allow
Allow from all
</Directory>
ServerName bolg.malu.me
DocumentRoot /var/www/html/w2
</VirtualHost>

把.htaccess文件放在/var/www/html/w2下即可正常实现反向代理。

apache实现反向代理就介绍到这里,接下来到陋室博客再次出现无法访问的时候,就可以更改dns到该主机上,如果再设置个脚本自动切换dns那一台小型CDN就实现啦。

此条目是由 malu8 发表在 未分类 分类目录的。将固定链接加入收藏夹。

评论已关闭。