• 推荐!搬瓦工官方代理,自动更换被封IPJust My Socks

ad

结合Nginx反向代理搭建域名被墙网站的镜像网站

前几天网站域名被GFW拉入黑名单,直接DNS污染返回一系列乱七八糟的IP。我也立即开通的镜像网站,国内用户可以通过镜像网站访问,与原站同步。那么,这个镜像网站到底怎么做的呢?本文就来介绍下如何结合Nginx的反向代理功能搭建一个域名被墙网站的镜像网站。

 

什么是反向代理

稍微解释一下什么是反向代理,更详细的自己去问Google。

既然有反向代理,那么肯定就有正向代理。正向代理其实就是我们常说的代理,举个例子,SS就是正向代理,国内(客户端)访问谷歌(服务器端),无法打开(GFW V587),于是我们把请求交给国外的代理服务器,而这个代理服务器可以访问谷歌(GFW再V587也管不了国外的事啊),于是这个代理服务器在接收到你的请求后,请求了谷歌,之后把谷歌的响应结果再返回给你,这就是正向代理。而反向代理是什么呢?你(客户端)在打10086找移动客服的时候(移动真贵,建议不用),不用考虑要找哪个客服(服务器端),你只是要找到客服就行,于是打10086再按0的操作就是一个反向代理,把你的请求代理到每一个客服那里去。

总结一句话,正向代理隐藏真实客户端,反向代理隐藏真实服务端

 

镜像网站配置

首先是镜像网站域名:例如我的flyzy2005.win,这个就是镜像网站的域名地址。(NameSilo域名购买,com域名首年$5.99

接着是镜像网站VPS:必须要明确的是,这个VPS必须是国外的VPS,因为国内的VPS无法访问你被墙的域名。(Vultr最新优惠信息汇总 or 搬瓦工最新优惠码汇总

最后就是LNMP环境,虽然你的镜像网站不需要任何数据,但是基本的网络环境还是需要的。(手动在Ubuntu上配置Nginx+MySQL+PHP7 or LNMP环境一键安装包

 

配置镜像网站

首先说一下我的原站的配置

服务器在Linode的弗里蒙特,最低配置5刀/月的(因为有信用卡新注册Linode就送20美元)。解析放在了Cloudflare,开通了免费版的全球CDN,毕竟Cloudflare的CDN除了国内,其他速度都很快。

配置HTTP镜像网站

如果你的原站没有开通https,只是http的,举个例子,用http://www.abc.com镜像http://www.baidu.com,那么只需要修改Nginx的配置文件如下:

server
	{
		listen 80;
		server_name www.abc.com;
		
		if ($http_user_agent ~* (baiduspider|360spider|haosouspider|googlebot|soso|bing|sogou|yahoo|sohu-search|yodao|YoudaoBot|robozilla|msnbot|MJ12bot|NHN|Twiceler)) {
		return  403;
		}
  
		location / {
		sub_filter www.baidu.com www.abc.com;
		sub_filter_once off;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header Referer http://www.baidu.com;
		proxy_set_header Host www.baidu.com;
		proxy_pass http://www.baidu.com;
		proxy_set_header Accept-Encoding "";
		}
}

第二段代码的作用的防止搜索引擎spider收录你的站(抄的),这样你原站的收录就不会因为有镜像站而减少。

配置HTTPS镜像网站

如果你的站是https的,那么你的http代理就会被重定向到https(例如我的站),那么就要在Nginx配置文件里写好SSL证书,直接镜像HTTPS。我的镜像站的SSL证书用的是letsencrypt免费HTTPS证书,以https://www.flyzy2005.win镜像https://www.flyzy2005.com为例,Nginx配置如下:

server
	{
		listen 80;
		listen 443 ssl;
		ssl on;
    ssl_certificate /etc/letsencrypt/live/flyzy2005.win/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/flyzy2005.win/privkey.pem; # managed by Certbot
		ssl_session_cache shared:SSL:10m;
		ssl_session_timeout  10m;
                proxy_ssl_server_name on;
                proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
		server_name www.flyzy2005.win;
		add_header Strict-Transport-Security "max-age=31536000";
		
		if ( $scheme = http ){
			return 301 https://$server_name$request_uri;
		}
		
		if ($http_user_agent ~* (baiduspider|360spider|haosouspider|googlebot|soso|bing|sogou|yahoo|sohu-search|yodao|YoudaoBot|robozilla|msnbot|MJ12bot|NHN|Twiceler)) {
		return  403;
		}
  
		location / {
		sub_filter www.flyzy2005.com www.flyzy2005.win;
		sub_filter_once off;
		proxy_set_header X-Real-IP $remote_addr;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header Referer https://www.flyzy2005.com;
		proxy_set_header Host www.flyzy2005.com;
		proxy_pass https://www.flyzy2005.com;
		proxy_set_header Accept-Encoding "";
		}

}

server {
        listen 443 ssl; 
	server_name flyzy2005.win;
        return 301 https://www.flyzy2005.win$request_uri;

    ssl_certificate /etc/letsencrypt/live/flyzy2005.win/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/flyzy2005.win/privkey.pem; # managed by Certbot
}



server {
    if ($host = flyzy2005.win) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


        listen 80;
        listen [::]:80; 
	server_name flyzy2005.win;
        return 404; # managed by Certbot
}

我是flyzy2005.win转到www.flyzy2005.win,非http转到https。

点赞
  1. sliver说道:

    我正想说这种讨论vps的站怎么能不被墙呢。
    哦,原来是cloudfare cdn+tls1.3的结果

  2. ShootHair说道:

    抱歉,小白提问,域名解析被劫持的话是必须更换域名吗,这个反向代理和更换域名有什么区别吗?

    1. flyzy小站说道:

      域名被污染只能更换域名(除非你想我这样,国内不开代理打不开也无所谓)。这种镜像网站就是用一个国内可以打开的域名反向代理你的网站,内容完全一样,但是那个域名没有污染,因此可以在国内打开

  3. Bill T S说道:

    请问反向代理之后,访问 URL 会跳转变成代理对象 URL 正常吗?

      1. Bill T S说道:

        比较奇怪的是,今天在搭建的时候,反复测试都会跳转 URL,目前没找到解决方案。访问 demo 站,.win 的时候,也会跳转 URL,感觉很奇怪,表现更像是显性 URL 转发。

        谢谢站长。

  4. 小东说道:

    请问这样可以用来看you2b吗

    1. flyzy小站说道:

      可以的 你可以建立谷歌镜像、YouTube镜像等等。但是相比于镜像,不如搭建ss/ssr看YouTube

  5. 访客2018说道:

    感谢博主的精彩分享。有几点疑问请教:
    1)这样设置后,正常的访客统计受不受影响呢?会不会显示的都是.win的IP而非源站正常的访客IP?
    2)博主套了CF,反代的是源站呢还是CF对源站的缓存?
    3)如果不用A网址镜像B网址,直接反代,也就是说B站速度不快,用一个网络好的vps直接反代B站,而不需要换域名,该如何设置呢?
    再次感谢分享!

    1. flyzy小站说道:

      1)访客统计会变成win而不是原来的com(百度统计如此)
      2)CF的缓存
      3)你这个就是CDN的需求了,自己找一个国内速度不错服务器建一个CDN