Nginx 反向代理以及正则替换内容

如果是为了隐藏源站IP而使用Nginx 反向代理,可以将源站域名替换为一个不存在的子域名,然后在代理机上vi /etc/hosts,将这个不存在的子域名指向源站IP。

安装nginx

cd /root
apt-get update
apt-get install -y git gcc g++ make automake
sudo apt-get install libpcre3 libpcre3-dev
sudo apt-get install openssl libssl-dev

apt-get install zlib1g-dev

或者

yum -y install pcre-devel openssl openssl-devel

git clone https://github.com/yaoweibin/ngx_http_substitutions_filter_module
wget http://nginx.org/download/nginx-1.2.8.tar.gz
tar zxvf nginx-1.2.8.tar.gz
cd nginx-1.2.8
./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-http_sub_module --add-module=/root/ngx_http_substitutions_filter_module
make
make install

修改nginx.conf,配置反向代理以及替换内容

添加缓存文件夹
mkdir /home/cache/path -p
mkdir /home/cache/temp
chmod 777 -R /home/cache

cd /usr/local/nginx/conf/

新增虚拟主机配置:
vi /usr/local/nginx/conf/vhosts/xxx.com.conf

修改nginx.conf
#在 http 配置节的结束花括号 } 前一行加入如下语句
include /usr/local/nginx/conf/vhosts/*;

创建www这个用户
/usr/sbin/groupadd -f www
/usr/sbin/useradd -g www www

查看配置文件是否正确

由于系统默认会查找/usr/bin下的命令

ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx
/usr/local/nginx/sbin/nginx -t

重新加载 Nginx配置文件

service apache2 stop

sudo nginx -c /usr/local/nginx/conf/nginx.conf
sudo nginx -s reload

示例:

xxx-com

nginx

 

替换规则

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;

*subs_filter* 是用来替换文本的,可以使用正则
* *g*(默认):替换匹配项。
* *i*:区分大小写的匹配
* *o*: 只匹配发现的第一个。
* *r*: 正则。

发表评论

电子邮件地址不会被公开。 必填项已用*标注