猛牛哥
记录网络点滴生活

使用Nginx反向代理做小偷站

本教程适用于军哥的LNMP

下面介绍的是反代别人的网站(类似于小偷),并替换相关内容

1.编译nginX

cd /root
apt-get update
apt-get install -y git gcc g++ make automake
#安装依赖包,Centos将apt-get更改为yum
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

如果您用的系统是Debian,就不需要编译了

echo “deb http://packages.dotdeb.org squeeze all” >>/etc/apt/sources.list
echo “deb-src http://packages.dotdeb.org squeeze all” >>/etc/apt/sources.list
#添加dotdeb源,已多次介绍dotdeb源的好处
apt-get update
apt-get install nginx-full
#nginx-full这个包里面包含着所有需要用到的模块。

2.修改nginx.conf

编译的在/usr/local/nginx/conf/nginx.conf,源安装的在/etc/nginx/nginx.conf

以example.com反代www.baidu.com并替换内容为例:

#error_log logs/error.log;
#error_log logs/error.log notice;
error_log logs/error.log info;
pid logs/nginx.pid;

events {
use epoll;
worker_connections 1024;
}

http {
… #此处省略一万字
proxy_connect_timeout 5;
proxy_read_timeout 60;
proxy_send_timeout 5;
proxy_buffer_size 16k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
proxy_temp_path /home/cache/temp;
proxy_cache_path /home/cache/one levels=1:2 keys_zone=cache_one:3m inactive=7d max_size=1g;

server {
listen 80;
server_name example.com;
index index.php;
#默认首页

location / {
subs_filter_types text/html text/css text/xml;
subs_filter www.baidu.com example.com gi;
#替换模块,下文详解。

proxy_cache_key “$scheme://$host$request_uri”;
#缓存key规则,用于自动清除缓存。

proxy_cache cache_one;
#缓存区名称,必须与前面定义的相同

proxy_cache_valid 200 304 3h;
proxy_cache_valid 301 3d;
proxy_cache_valid any 10s;
#200 304状态缓存3小时
#301状态缓存3天
#其他状态缓存(如502 404)10秒

proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
#向后端传递访客ip

proxy_set_header Referer http://www.baidu.com;
#强制定义Referer,程序验证判断会用到

proxy_set_header Host www.baidu.com;
#定义主机头

proxy_pass http://1.2.3.4;
#指定后端ip

proxy_set_header Accept-Encoding “”;
#清除编码

proxy_cache_use_stale invalid_header error timeout http_502
#当后端出现错误、超时、502状态时启用过期缓存
}
}
}

user  www;
worker_processes  2;
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
error_log  logs/error.log  info;
pid        logs/nginx.pid;
events {
                use epoll;
    worker_connections  1024;
}
http {
… #此处省略一万字
                proxy_connect_timeout    5;
                proxy_read_timeout       60;
                proxy_send_timeout       5;
                proxy_buffer_size        16k;
                proxy_buffers            4 64k;
                proxy_busy_buffers_size 128k;
                proxy_temp_file_write_size 128k;
                proxy_temp_path   /home/cache/temp;
                proxy_cache_path  /home/cache/one levels=1:2 keys_zone=cache_one:3m inactive=7d max_size=1g;
server {
   listen       80;
   server_name  example.com;
   index index.php;
        #默认首页
  location / {
    subs_filter_types text/html text/css text/xml;
    subs_filter www.baidu.com example.com gi;
#替换模块,下文详解。
    proxy_cache_key “$scheme://$host$request_uri”;
#缓存key规则,用于自动清除缓存。
    proxy_cache cache_one;
#缓存区名称,必须与前面定义的相同
    proxy_cache_valid  200 304 3h;
    proxy_cache_valid 301 3d;
    proxy_cache_valid any 10s;
#200 304状态缓存3小时
#301状态缓存3天
#其他状态缓存(如502 404)10秒
    proxy_set_header   X-Real-IP  $remote_addr;
    proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
#向后端传递访客ip
    proxy_set_header   Referer http://www.baidu.com;
#强制定义Referer,程序验证判断会用到
    proxy_set_header   Host www.baidu.com;
#定义主机头
    proxy_pass http://1.2.3.4;
#指定后端ip
    proxy_set_header Accept-Encoding “”;
#清除编码
   proxy_cache_use_stale invalid_header error timeout http_502
#当后端出现错误、超时、502状态时启用过期缓存
        }
    }
}

温馨提示:如果您要替换的内容里面有中文,请将conf文件保存为utf-8 without BOM编码。

关于ngx_http_substitutions_filter_module的说明:(本模块是中国人写的,但是说明只有英文版,在此我翻译一下)

描述 nginx_substitutions_filter 是一个nginx替换模块,就跟apache的 mod_substitute模块一样

使用距离

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;

}

涉及指令: * subs_filter_types

* subs_filter

subs_filter_types 语法: *subs_filter_types mime-type [mime-types] *

默认: *subs_filter_types text/html*

内容: *http, server, location*

*subs_filter_types* 是用来指定替换文件类型的 默认仅仅替换text/html类型的文件。

*如果您反代的论坛出现登录跳转源站之类的问题,请检查这个项目。

 

proxy_set_header Accept-Encoding “”;

subs_filter 语法: *subs_filter source_str destination_str [gior] *

默认: *none*

内容: *http, server, location*

*subs_filter* 是用来替换文本的,可以使用正则

* *g*(默认):替换匹配项。

* *i*:区分大小写的匹配

* *o*: 只匹配发现的第一个。

* *r*: 正则。

注:转自http://jybb.me/nginx-proxy-pass

赞(0) 打赏
猛牛哥原创:猛牛哥的博客 » 使用Nginx反向代理做小偷站

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏