nginx 反向代理CDN镜像别人网站

摘要:nginx反向代理CDN镜像别人网站...

作者:LoveCode标签:nginx,反向代理,CDN镜像,网站

我们可以通过Nginx的向代理,镜像一个网站,网上的CDN也是这个原理,比如网站放国外被墙了,那镜像到国内,数据在国外不变,当然也可以山寨或克隆一别人个网站,俗称小偷网站。

比做小偷站实现起来更简单,因为不用任何网站程序,只需配置Nginx的反向代理即可。

upstream www.aaa.com {
    server 115.238.101.200:80;
}
server{
    listen 80;
    server_name www.myweb.com;
    proxy_set_header Host www.aaa.com;
    proxy_set_header x-forwarded-for $remote_addr;
    
    location /{
        proxy_pass http://www.aaa.com;
    }
}

或者用下面的

server
{
    listen 80;
    server_name www.myweb.com myweb.com;
    
    location / {
        proxy_pass http://www.aaa.com/;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

并且可以使用第三方模块HttpSubModule进行关键词替换,可以将对方网站的域名,广告等替换成自己的。

插件地址: http://wiki.nginx.org/HttpSubsModule

location / {
    sub_filter_types text/html text/css text/xml;
    sub_filter st(\d*).example.com $1.example.com ir; #规则替换
    sub_filter a.example.com s.example.com; #规则替换
}

当然我们也可以在nginx中开启缓存,这样就不需要每次都向源网站发起请求了。

sub_filter_once off;

完毕之后再

/etc/init.d/nginx restart


—————————————————————————————————————

如果你用的是军哥的LNMP,而且又需要替换内容,则需要重新编译nginx。如果不需要替换内存,仅用于加速自己的网站,则不需要重新编译。

1.安装Nginx,你可以用源安装/编译安装/一键包(此处省略)

2.新增虚拟主机配置文件用于反代

找到您的nginx conf所在位置,一般编译的在/usr/local/nginx/conf/,从源安装的在/etc/nginx

在nginx.conf的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/path levels=1:2 keys_zone=cache_one:5m inactive=7d max_size=1g;

#5m为内存占用,1g为最大硬盘占用,cache_one为缓存区名字,如果修改则下文的配置亦要相应修改。
mkdir /home/cache/path -p
mkdir /home/cache/temp
chmod 777 -R /home/cache

#新增虚拟主机配置:
vi /usr/local/nginx/conf/vhost/example.com.conf
#example.com是你要绑定的域名

配置文件内容:{

    后端(ip为1.2.3.4)绑定域名example.com,前端绑定域名example.com,域名解析到前端,实现cdn加速。

}

server{
    listen 80;
    server_name example.com www.example.com;#绑定的域名
    index index.php;#默认首页
    access_log off;#off 关闭日志
    
    location / {
        proxy_cache_key "$scheme://$host$request_uri";#缓存key规则,用于自动清除缓存。
        proxy_cache cache_one;#缓存区名称,与前面定义的相同
        
        #200 304状态缓存3小时,301状态缓存3天,其他状态缓存(如502 404)10秒
        proxy_cache_valid 200 304 3h;
        proxy_cache_valid 301 3d;
        proxy_cache_valid any 10s;
        
        #向后端传递访客ip
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        
        proxy_set_header Referer http://example.com;#强制定义Referer,程序验证判断会用到
        proxy_set_header Host $host;#定义主机头
        proxy_pass http://1.2.3.4;#指定后端ip,可以加端口
        
        #proxy_cache_use_stale invalid_header error timeout http_502
        #当后端出现错误、超时、502状态时启用过期缓存,慎用。
    }
}


如无意外,重启nginx后把example.com绑定到前端就可以访问了

/etc/init.d/nginx restart

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

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
wget http://www.dotdeb.org/dotdeb.gpg
apt-key add dotdeb.gpg
#添加dotdeb源,已多次介绍dotdeb源的好处
apt-get update
apt-get install nginx-full

#nginx-full这个包里面包含着所有需要用到的模块。


CopyRight © 2017 荒山本的官方网站 粤ICP备16049175号 All Right Service 网站地图(xml) 网站地图(html)