在我们环境下,经常需要运营对网站进行测试,但是偶尔会出现不知道是在测试环境还是正式环境,因为测试环境都是通过Nginx反向代理进行访问.因此本文利用Nginx进行网页内容替换,然后在醒目位置进行提醒,以达到对测试环境的标识作用
yum -y install openssl openssl-devel
在编译nginx的时候添加--with-http_sub_module以加载sub模块
nginx官网下载安装包:http://nginx.org/en/download.html
wget http://nginx.org/download/nginx-1.11.5.tar.gz
tar -zxvf nginx-1.11.5.tar.gz
cd nginx-1.11.5
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --without-http_rewrite_module
make
make install
如果全是测试环境的反向代理就只需要在http里头添加,当然也可以针对单个站点
sub_filter <body '<div style="border: red 1px solid;width: 100px;text-align: center;line-height: 30px;height: 30px;font-size: 14px;z-index: 999999999;position: fixed;top: 80px;font-weight: bold;background-color: yellow;left: 10px;">测试服务器</div><body';
sub_filter_once off;
sub_filter_types application/json application/x-javascript text/plain;
我试图反向代理我的网站并修改内容.
为此,我使用sub_filter编译了Nginx.
它现在接受sub_filter指令,但它不能以某种方式工作.
server {
listen 8080;
server_name www.xxx.com;
access_log /var/log/Nginx/www.goparts.access.log main;
error_log /var/log/Nginx/www.goparts.error.log;
root /usr/share/Nginx/html;
index index.html index.htm;
## send request back to apache1 ##
location / {
sub_filter 502 http_503 http_504;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
请帮我
最佳答案
检查上游源是否已打开gzip,如果需要,请执行此操作
proxy_set_header Accept-Encoding "";
所以整个事情都会像
location / {
proxy_set_header Accept-Encoding "";
proxy_pass http://upstream.site/;
sub_filter_types text/css;
sub_filter_once off;
sub_filter .upstream.site special.our.domain;
}
检查这些链接
============================
二、常用指令:
2.1 sub_filter指令: sub_filter string(原字符串) replacement(用于替换的字符串);
用于设置需要使用说明字符串替换说明字符串.string是要被替换的字符串,replacement是 新的字符串,它里面可以带变量。
2.2 sub_filter_last_modified指令: sub_filter_last_modified on | off;
用于设置网页内替换后是否修改 可在nginx.conf的 http, server, location三个位置配置使 用,默认值是off;
2.3 sub_filter_once指令:sub_filter_once on | off;
用于设置字符串替换次数,默认只替换一次。如果是on,默认只替换第一次匹配到的到字 符,如果是off,那么所有匹配到的字符都会被替换;
2.4 sub_filter_types指令:sub_filter_types *
用于指定需要被替换的MIME类型,默认为“text/html”,如果制定为*,那么所有的;
说明:以上指令可在nginx.conf的http, server, location三个位置配置使用;
三、反向代理动态替换网页内容实例参考:
upstream www.iptest.cn {
server 118.184.180.46:80;
}
#反向代理,如果有多个服务端ip,还可以添加负载均衡方式,权重等策略#
server {
listen 80;
#监听端口#
server_name www.iptest.cn;
#设置server name#
charset utf-8;
#设置字符编码为utf-8,可根据实际情况调整#
location / {
proxy_pass http://www.iptest.cn$request_uri;
#反向代理规则#
proxy_set_header Accept-Encoding deflate;
#设置反向代理头部,有时候源站响应的是gzip格式,替换的时候会有问题,可通过此项解决#
subs_filter '183.251.160.127' '123.181.128.17';
#替换指定ip,此处将183.251.160.127替换成123.181.128.17#
subs_filter '福建省龙岩市 移动' '河北省唐山市 电信';
#替换城市、运营商信息,nginx此替换模块支持中文替换#
subs_filter_types text/html;
#指定被替换的MIME类型#
sub_filter_once on;
#指定字符串替换次数,on表示只替换第一次匹配到的字符,off表示替换所有匹配到的字符#
}
}
说明:
1、此模块替换不区分大小写;
2、支持中文替换;
Nginx.conf 完整配置:
yum -y install openssl openssl-devel
在编译nginx的时候添加--with-http_sub_module以加载sub模块
nginx官网下载安装包:http://nginx.org/en/download.html
wget http://nginx.org/download/nginx-1.11.5.tar.gz
tar -zxvf nginx-1.11.5.tar.gz
cd nginx-1.11.5
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module --without-http_rewrite_module
make
make install
如果全是测试环境的反向代理就只需要在http里头添加,当然也可以针对单个站点
sub_filter <body '<div style="border: red 1px solid;width: 100px;text-align: center;line-height: 30px;height: 30px;font-size: 14px;z-index: 999999999;position: fixed;top: 80px;font-weight: bold;background-color: yellow;left: 10px;">测试服务器</div><body';
sub_filter_once off;
sub_filter_types application/json application/x-javascript text/plain;
我试图反向代理我的网站并修改内容.
为此,我使用sub_filter编译了Nginx.
它现在接受sub_filter指令,但它不能以某种方式工作.
server {
listen 8080;
server_name www.xxx.com;
access_log /var/log/Nginx/www.goparts.access.log main;
error_log /var/log/Nginx/www.goparts.error.log;
root /usr/share/Nginx/html;
index index.html index.htm;
## send request back to apache1 ##
location / {
sub_filter 502 http_503 http_504;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
请帮我
最佳答案
检查上游源是否已打开gzip,如果需要,请执行此操作
proxy_set_header Accept-Encoding "";
所以整个事情都会像
location / {
proxy_set_header Accept-Encoding "";
proxy_pass http://upstream.site/;
sub_filter_types text/css;
sub_filter_once off;
sub_filter .upstream.site special.our.domain;
}
检查这些链接
============================
二、常用指令:
2.1 sub_filter指令: sub_filter string(原字符串) replacement(用于替换的字符串);
用于设置需要使用说明字符串替换说明字符串.string是要被替换的字符串,replacement是 新的字符串,它里面可以带变量。
2.2 sub_filter_last_modified指令: sub_filter_last_modified on | off;
用于设置网页内替换后是否修改 可在nginx.conf的 http, server, location三个位置配置使 用,默认值是off;
2.3 sub_filter_once指令:sub_filter_once on | off;
用于设置字符串替换次数,默认只替换一次。如果是on,默认只替换第一次匹配到的到字 符,如果是off,那么所有匹配到的字符都会被替换;
2.4 sub_filter_types指令:sub_filter_types *
用于指定需要被替换的MIME类型,默认为“text/html”,如果制定为*,那么所有的;
说明:以上指令可在nginx.conf的http, server, location三个位置配置使用;
三、反向代理动态替换网页内容实例参考:
upstream www.iptest.cn {
server 118.184.180.46:80;
}
#反向代理,如果有多个服务端ip,还可以添加负载均衡方式,权重等策略#
server {
listen 80;
#监听端口#
server_name www.iptest.cn;
#设置server name#
charset utf-8;
#设置字符编码为utf-8,可根据实际情况调整#
location / {
proxy_pass http://www.iptest.cn$request_uri;
#反向代理规则#
proxy_set_header Accept-Encoding deflate;
#设置反向代理头部,有时候源站响应的是gzip格式,替换的时候会有问题,可通过此项解决#
subs_filter '183.251.160.127' '123.181.128.17';
#替换指定ip,此处将183.251.160.127替换成123.181.128.17#
subs_filter '福建省龙岩市 移动' '河北省唐山市 电信';
#替换城市、运营商信息,nginx此替换模块支持中文替换#
subs_filter_types text/html;
#指定被替换的MIME类型#
sub_filter_once on;
#指定字符串替换次数,on表示只替换第一次匹配到的字符,off表示替换所有匹配到的字符#
}
}
说明:
1、此模块替换不区分大小写;
2、支持中文替换;
Nginx.conf 完整配置: