Nginx 的反向代理实在是太好用了,无名屡试不爽。除了使用反向代理上一些不能上的网站如”Twitter”外,山寨或克隆对方网站也很过瘾。若在反向代理的过程 中把源网站内的链接也给替换了,貌似就像是小偷站一样,但是比做小偷站实现起来更简单,因为不用任何网站程序,配置Nginx反向代理就可以了。
若使用官方的with-http_sub_module模块只能匹配1条规则,所以使用第三方模块HttpSubModule可以匹配多条规则。
使用SVN下载模块源码:
svn checkout http://substitutions4nginx.googlecode.com/svn/trunk/ substitutions4nginx-read-only
编译参数:
--add-module=模块源码路径
Example
location / {
subs_filter_types text/html text/css text/xml;
subs_filter st(d*).example.com $1.example.com ir;
subs_filter a.example.com s.example.com;
}
官方文档:http://wiki.nginx.org/HttpSubsModule#Installation
Nginx反向代理做小偷站只能玩玩的,使用Nginx反向代理功能更多是用在负载均衡等方面。
http://none.name/nginx-reverse-proxy/
四师兄利用以下提示,在vps已部署的lnmp环境下测试通过。
首先四师兄升级nginx为1.0.5
然后编译,绿色为四师兄执行,红色为未执行
aptitude install gcc g++ vim libncurses5-dev make libxml2-dev
apt-get -y install subversion
apt-get install libpcre3 libpcre3-dev libcurl4-openssl-dev
wget -c http://nginx.org/download/nginx-1.0.5.tar.gz
tar -zxf nginx-1.0.5.tar.gz
wget -c http://wiki.nginx.org/images/5/51/Nginx-accesskey-2.0.3.tar.gz
tar -zxf Nginx-accesskey-2.0.3.tar.gz
svn checkout http://substitutions4nginx.googlecode.com/svn/trunk/ substitutions4nginx-read-only
curdir=$(pwd)
cd nginx-1.0.5
./configure --user=nobody --group=nobody --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --pid-path=/var/run/nginx.pid --conf-path=/etc/nginx/nginx.conf --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6 --with-pcre --with-http_sub_module --add-module=$curdir/substitutions4nginx-read-only --add-module=$curdir/nginx-accesskey-2.0.3
make
make install
nginx安装过程就这样了,如果已经安装过nginx的可以搜索下nginx升级的方法来完成!
安装substitutions4nginx提示错误:-bash: svn: command not found
需安装subversion 安装命令yum -y install subversion
四师兄执行时,提示:
Error Downloading Packages:
subversion-1.6.11-7.el5_6.4.i386: Insufficient space in download directory /var/cache/yum/base/packages
这个错误提示意味着磁盘空间不足,查看:
yum clean all后用该命令看useage还有多少
df -h /var/cache/yum/updates/packages
编译参数里面的--with-http_sub_module --add-module=$curdir/substitutions4nginx-read-only --add-module=$curdir/nginx-accesskey-2.0.3 保留其他自行斟酌更改,这里就不罗嗦了!
substitutions4ngin是用来做替换,支持正则式!
nginx-accesskey和本文关系不大,主要作用是用于封IP访问和防盗链之用!
然后是nginx.conf的配置,基本配置就不阐述了,下面贴一个反向hostloc论坛的实例
server
{
listen 80;
server_name kvm.domain.net; #绑定的域名
root /var/www/html; #网站目录(搭配lnamp的时候有用处!)
access_log off; #off 关闭日志
location / {
subs_filter 'www.hostloc.com' 'bbs.kvm.la' gi; #substitutions4nginx替换 (使用方法参照官方)
subs_filter '全球主机交流论坛' '全球主机网' gi; #substitutions4nginx替换 (使用方法参照官方)
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Referer http://www.hostloc.com; #强制定义Referer,程序验证判断会用到
proxy_set_header Host www.hostloc.com; #定义主机头,如果目标站点绑定的域名个server_name项的吻合则使用$host
proxy_pass http://174.127.189.179; #指定目标,建议使用IP或者nginx自定义池
proxy_set_header Accept-Encoding ""; #清除编码
}
}
更多详细Proxy设置参考nginx官方wiki说明:http://wiki.nginx.org/HttpProxyModule