Nginx的反向代理功能确实很方便,简单适用,功能强大。
今天醒醒在host1free的免费VPS上也做了一个Nginx的反向代理www.xxorg.com,并通过with-http_sub_module和HttpSubModule模块替换正文内容和URL,把配置的过程记录下来。
使用官方的with-http_sub_module模块只能匹配1条规则,所以使用第三方模块HttpSubModule可以匹配多条规则
host1free的免费VPS上已经按照了lnmp套件,为了省事,直接重编译了。
一、确认已经安装了SVN.
如果安装substitutions4nginx提示错误:-bash: svn: command not found
那么就需要先安装subversion
安装命令:yum -y install subversion 二、重新编译Nginx.
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 cd /root/lnmp0.9/nginx-1.0.15 ./configure –user=www –group=www –prefix=/usr/local/nginx –with-http_stub_status_module –with-http_ssl_module –with-http_gzip_static_module –with-ipv6 –with-pcre –with-http_sub_module
–add-module=/root/substitutions4nginx-read-only –add-module=/root/nginx-accesskey-2.0.3 make make install
注意:
./configure后面的参数如果路径不对找不到的话,按照实际的路径情况修改substitutions4ngin是用来做替换,支持正则式!nginx-accesskey据说可以对自己的站进行设置,用于防止他人反代,属于非必要的选项。现在已经配置好Nginx反向代理并替换正文内容和URL的环境了。
三、新建虚拟主机并配置nginx.conf
1、lnmp环境下新建虚拟主机,执行命令:/root/vhost.sh 根据提示输入域名xxorg.tvvps.com ,其他全部选n.
2、打开“/usr/local/nginx/conf/vhost”下的“xxorg.tvvps.com.conf”进行编辑,也可以下载回本地,修改后再上传。
3、修改“xxorg.tvvps.com.conf”的内容为:
- server
- {
- listen 80;
- server_name xxorg.tvvps.com; #绑定的域名
- root /var/www/xxorg.tvvps.com; #网站目录(搭配lnamp的时候有用处!)
- access_log off; #off 关闭日志
- location / {
- subs_filter ‘www.xxorg.com’ ‘xxorg.tvvps.com’ gi; #substitutions4nginx替换 (使用方法参照官方)
-
subs_filter ‘服务器VPS折腾’ ‘TVvps.com技术支持博客’ 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.xxorg.com; #强制定义Referer,程序验证判断会用到
- proxy_set_header Host www.hostloc.com; #定义主机头,如果目标站点绑定的域名个server_name项的吻合则使用$host
- proxy_pass http://220.181.136.34; #指定目标,建议使用IP或者nginx自定义池
- proxy_set_header Accept-Encoding “”; #清除编码
- }
- }
4、重启lnmp.命令:/root/lnmp restart 到此已经完成了。打开xxorg.tvvps.com你会看到www.xxorg.com的内容,并且关键子被替换了。
五、几个有用的东西。
1、
with-http_sub_module用法:http://wiki.nginx.org/HttpSubModule
substitutions4nginx用法:http://code.google.com/p/substitutions4nginx/
Proxy设置参考nginx官方wiki说明:http://wiki.nginx.org/HttpProxyModule
2、
substitutions4nginx参数:
g(default):替换所有匹配的字符串。
i: 执行不区分大小写的匹配。
o: 只需将第一个。
r: 该模式是作为一个正则表达式处理,默认是固定的字符串。
正则表达式实际使用:
subs_filter ‘<(no?script.*?)>(.*?)<(\/no?script.*?)>’ ” gi; //替换掉全部的subs_filter ‘<(s?cript.*?)>(?:\s|\S)*?<(\/s?cript.*?)>’ ” gi; //替换掉全部的
subs_filter ‘<(i?frame.*?)>(.*?)<(\/i?frame.*?)>’ ” gi; //替换
实际测试中sub_filter比subs_filter的速度要快,但如果你开启了nginx的cache速度上可以得到改善的。
测试过程发现对gzip源的内容无法实现替换的问题
可以在server段内加入 proxy_set_header Accept-Encoding “”;
如果是替换中文词组则需要将nginx的配置文件保存为utf-8格式!
最新评论
家里挂了一个玩客云,有什么办法能电脑远程访问玩客云里图片视频,能不能回复一下我的QQ邮箱837423271@qq.com.有偿请教
666,我反而想在vps搭建smb服务端,家里PC挂载上。还想过能不能在vps同时搭个v2ray服务端,PC连上v2ray后自动内网挂载~
站长,可以直接给出一个nat类型的结论显示吗?
ubuntu 系统怎么操作呢?求问问。
右上角有个个人微信二维码 有加过的吗 我加了但是没通过,是不是博主微信
已经无法打开了!
没标出来活动什么时候结束,刚刚去看了,结束了
我比较想知道怎么联系博主…