使用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 条评论
登录 后参与评论

相关文章

来自专栏ios 技术积累

Maven 初识

才接触Maven的时候也是一头雾水,网上搜索了一些资料后感觉Maven和iOS开发中的cocoapods很像,cocoapods自动下载我们需要的开源类不需要手...

1473
来自专栏北京马哥教育

跟大神一起十五分钟制作一个属于自己得Linux操作系统!

一、前言 Linux操作系统至1991年10月5日诞生以来,就其开源性和自由性得到了很多技术大牛的青睐,每个Linux爱好者都为其贡献了自己的一份力,不管是在L...

4103
来自专栏JAVA高级架构开发

浅谈Nginx服务器的内部核心架构设计!

Nginx---Ngine X,是一款免费的、自由的、开源的、高性能HTTP服务器和反向代理服务器;也是一个IMAP、POP3、SMTP代理服务器;Nginx以...

3040
来自专栏草根专栏

Git -- 分支与合并 (命令行+可视化工具p4merge)

把所有的变化都放在master分支并不是最好的做法. 建议的做法是把变化放在分支里面.

6168
来自专栏pangguoming

windows下 安装 rabbitMQ 及操作常用命令

rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统。它遵循Mozilla Public License开源协议,采用 Erlang 实现...

4138
来自专栏草根专栏

Git -- 分支与合并 (命令行+可视化工具p4merge) Fast Forward 合并禁用 Fast Forward 合并自动合并解决合并的冲突

基本命令 把所有的变化都放在master分支并不是最好的做法. 建议的做法是把变化放在分支里面. ? 至少应该准备一个feature分支之类的, 把变化都隔离开...

3459
来自专栏编程

推荐两个bash环境下的Git插件

情景 在使用Git时,常遇到这样的情况: 使用子命令时必须完全输入,并不能像shell那样有命令补全的功能; Git鼓励大量使用分支,当在分支之间切换时,常常需...

3099
来自专栏微信公众号:Java团长

Java程序员必备的Intellij插件

地址:https://plugins.jetbrains.com/plugin/7495--ignore

941
来自专栏生信小驿站

R.python常见问题②(一些需要编译的包)

在R语言的广泛包中,大部分可以直接install.packages()直接命令安装,但是有些包安装过程比较复杂,例如'lightgbm,ggplot2所依赖的‘...

982
来自专栏开源优测

Linux下常用的监控工具和命令

如果性能测试的目标服务器是linux系统,在如何使用linux自带的命令来实现性能测试过程的监控分析呢?

1382

扫码关注云+社区

领取腾讯云代金券