逗比云还是逃不过被墙的命运,既然如此那以后逗比云也就一直用被墙的旧域名 [softsmirror.cf] 算了。
投稿文章 | 广告合作 | Telegram 群组 / 公告频道 / 使用教程
广告

另一种利用Nginx反向代理来简单镜像 HTTP(S)网站 的方法

网络资源 Toyo 50评论
广告
本文最后更新于 2018年1月12日 17:12 可能会因为没有更新而失效。如已失效或需要修正,请留言!

最近发了几篇镜像谷歌的教程,然后就有人问我镜像其他网站的方法,那我就写个教程吧。

利用nginx的反向代理优势来镜像 HTTP(S)网站。


其他的一些镜像Google的教程:

安装Nginx

 

LNMP一键包方式 安装Nginx

当然,lnmp一键包我还是推荐 军哥的LNMP一键包

点击展开 查看更多

 

配置文件示例

以下教程 域名以 www.abc.com 为例,被镜像网站以 www.baidu.com 为例

然后访问你的域名看一看是否成功镜像,需要注意的一点是,如果被镜像的网站设置了防盗链,那么静态文件(js/css/图片)可能无法显示,这就没办法了。

参数解释

一般情况下只需要更改这几个参数。

server_name 你的域名;

sub_filter 欲被镜像的域名 你的域名;

proxy_set_header Referer http://欲被镜像的域名;

proxy_set_header Host 欲被镜像的域名;

proxy_pass http://欲被镜像的域名;

HTTP 示例

以下示例是以 www.abc.com 镜像 www.baidu.com 为例。自行替换 其中的参数:

第二段是 屏蔽搜索引擎收录,比如镜像自己的网站,如果不屏蔽会导致 收录流失。

注意:不管你是镜像 www.baidu.com 还是 www.google.com.hk (不要直接使用 .com 会被谷歌自动根据VPS所在地区重定向的),他们两个目前都是强制重定向到 https ,这意味着如果你只配置了 http 反向代理,那么访问反向代理域名后会重定向到 https 的目标域名,所以你也必须配置 https 才行。

# 下面这段代码才是 HTTP 完整示例配置文件,注意使用时修改里面的默认域名等信息。
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 "";
		}
}

HTTPS 示例

当你要镜像的网站不开放 HTTP或者强制HTTPS 的时候,你就需要加上 SSL 来转成 HTTPS 了。

假设SSL证书文件位置是:/root/ssl.crt

假设SSL密匙文件位置是:/root/ssl.key

第二段的 301 代码是,强制走HTTPS,如果不需要可以去掉。

第三段是 屏蔽搜索引擎收录,比如镜像自己的网站,如果不屏蔽会导致 收录流失。

同时下面这两个选项的记得把 http:// 改成 https://

proxy_set_header Referer https://www.baidu.com;
proxy_pass https://www.baidu.com;
# 下面这段代码才是 HTTP 完整示例配置文件,注意使用时修改里面的默认域名等信息。
server
	{
		listen 80;
		listen 443 ssl;
		ssl on;
		ssl_certificate /root/ssl.crt;
		ssl_certificate_key /root/ssl.key;
		ssl_session_cache shared:SSL:10m;
		ssl_session_timeout  10m;
		server_name www.abc.com;
		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.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 https://www.baidu.com;
		proxy_set_header Host www.baidu.com;
		proxy_pass https://www.baidu.com;
		proxy_set_header Accept-Encoding "";
		}
}

转载请超链接注明:逗比根据地 » 另一种利用Nginx反向代理来简单镜像 HTTP(S)网站 的方法
责任声明:本站一切资源仅用作交流学习,请勿用作商业或违法行为!如造成任何后果,本站概不负责!

赞 (21)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(50)个小伙伴在吐槽
  1. 大佬,我最近想反代以下pinterest.com(一个设计师用的图片网站),使用上面的方法,浏览器控制台会报POST请求403错误,这是为什么?求教如何处理。
    小猪熊2018-07-28 00:59 回复
    • 403 是禁止访问的错误代码。可能该网站的图片做了防盗链措施。
      Toyo2018-07-28 14:37 回复
  2. 请问下如果源站点是动态页面的时候能否通过镜像站点实现登录并且保存cookie,使用你的这个教程和https://blog.lyz810.com/article/2016/10/nginx-proxy-module-guide/ 这个都尝试了下,发现一直不知道怎么实现登录
    Cosli2018-04-17 20:02 回复
  3. 你好,我是在Windows环境下安装了nginx,测试了,发现点击列表页和内容页时,会跳转到原站点,这是什么情况呢?
    小李子2018-03-17 14:31 回复
    • 说明列表页和内容页的URL没有被替换。
      Toyo2018-03-17 17:34 回复
      • 哦,需要附加一些什么代码呢? 还是需要安装nginx模块? windows环境下无法替换内容页url吗?
        小李子2018-03-17 18:02 回复
        • 没有试过windows,nginx替换域名依赖于 --with-http_sub_module 扩展,需要编译安装nginx的时候就加上。
          Toyo2018-03-17 18:21 回复
          • 这个扩展不需要个别下载? 只需要下载nginx版本,编译安装就可以?
            小李子2018-03-17 19:48 回复
            • nginx 源码里面包含了,你只需要编译的时候加上这个参数,就会编译上。
              Toyo2018-03-18 11:20 回复
              • 谢谢,已经安装好了模块, 但今天又发现一个问题, 我是在自己的电脑里安装ubuntu 测试时, 本地内网ip都可以正常访问,但是用其他外部公网ip访问,我家的外部ip的话就访问不上了。 路由器设置的正常,防火墙也开了。查看80端口也在listening。 但我把 nginx.conf文件 server里的 listen 端口改为81的话,在本地电脑http://213.112.12.58:81也无法访问了。 我估计还是端口没打开的原因。。。 可是明明设置了防火墙和端口,不知怎么没效果了??
                小李子2018-03-20 16:16 回复
  4. 引——【第二段是 屏蔽搜索引擎收录,比如镜像自己的网站,如果不屏蔽会导致 收录流失。】—— D哥,这句话我不能理解啊,屏蔽搜索引擎,那不就等于搜索引擎无法找到自己的网站了吗? 既然没法找到,那收录流失是指?, 想让它反代自己的域名有收录可以吗?
    尼亚2018-03-07 23:24 回复
    • 你有个 a.com 域名,你用 b.com 反向代理 a.com,如果你镜像没有做任何屏蔽搜索引擎措施,那么搜索引擎在访问 b.com 的时候就会发现两个网站内容相似,可能会影响 a.com 的收录。
      比如我网站,镜像域名就屏蔽了搜索引擎,谷歌只收录了 doub.io 的网站域名。
      Toyo2018-03-08 19:09 回复
  5. 大佬,请教一下,如果是反代自己的博客,怎样才能保证主站权重不会被降?给点提示我去谷歌 :???:
    yush2018-02-10 18:20 回复
    • 镜像域名的 Nginx 配置文件中加入:
      if ($http_user_agent ~* "pingback|WordPresss|baiduspider|googlebot|soso|bing|sogou|yahoo|sohu-search|yodao|YoudaoBot|robozilla|msnbot|MJ12bot|NHN|Twiceler|^$") { return 444; }
      # 加到配置文件 location xxx { 字样段落前面即可。
      
      Toyo2018-02-11 00:43 回复
  6. 域名被 DNS 污染了,用楼主提供的方法做了两个域名的反向代理,撑了两个月,又被墙了。 后来在百度搜索被墙的域名,发现无耻的百度还是收录了几个敏感的网站。 所以提醒因网站被和谐而想反向代理的小伙伴,最好还是通过robots.txt禁止国内搜索引擎的抓取。
    王大锤2018-01-22 19:24 回复
  7. 这个能不能反向Google?
    nihao2018-01-14 11:38 回复
  8. 我用caddy反代google可以显示google的大图标,但是用nginx反代却显示不了google图标,站长有什么办法吗
    fgdfg2017-12-24 10:32 回复
  9. 大佬,我的问题 Job for nginx.service failed. See 'systemctl status nginx.service' and 'journalctl -xn' for details. 谷歌和百度的意思都是说少了分号,但是我可以确定,绝对是安装你的复制过去的。我把你的域名改成了我vps的ip,需要修改的地方都是确认过多次。 请您在方便的时候回复下,谢谢。
    夕阳游子2017-12-07 11:56 回复
    • 我需要详细的配置文件内容,请Telegram 联系我(TG使用教程)。
      Toyo2017-12-07 14:19 回复
    • 我用的debian8_64不行,换成了debian7_6就可以了
      夕阳游子2017-12-10 11:38 回复
  10. 试过反代 wx.qq.com ,二维码出不来。
    scott2017-07-23 12:18 回复
    • 二维码的域名是:login.weixin.qq.com,你只反向代理了wx.qq.com,而这个网站内部其他的域名没有反向代理。
      Toyo2017-07-23 12:25 回复
  11. 逗比大佬,如果想要加入缓存,来做一个CDN,应该怎么做
    AFR2017-05-23 21:56 回复
  12. 要是主站突然出现故障,镜像站能打开么?我想弄异地容灾
    doubi2017-04-29 01:02 回复
    • 不能,这个方法只是反向代理,没有缓存或者同步网站文件的功能。。。
      Toyo2017-04-29 01:10 回复
      • 那有什么办法同步网站的文件呢?
        doubi2017-04-29 01:16 回复
  13. 你好! 然后把CSR提交到这里,来申请SSL证书。 然后这个网站会给你注册域名的邮箱发一个验证链接,点开链接然后会问你是否同意,你点第一个同意的按钮,然后就会把SSL证书发到你的邮箱,然后邮件里会有Alpha中级证书的链接。 新建一个.crt格式的文件,然后把你的SSL证书复制进去,然后再把 Alpha中级证书加到最后面。 这样你就有了 一个 .key密匙,一个.crt 证书文件了。 这个邮件根本收不到,用中国数字证书生成了crt,但.key如何得到呢,网上找了个工具是将crt和key合并生成pem的,提示:错误:此证书不被信任,找不到对应的证书链信息
    qiaizhe2017-01-03 17:05 回复
    • 我已经说了“通过这里生成CSR(泛域名请填写 *.baidu.com 这样的格式)和KEY(记得复制保存到本地,后缀.key)” 你会获得 csr 和 key 文本。
      csr的提交到这里,来申请SSL证书。
      crt证书不是生成的,而是alpha颁发的,会发邮件给你的。
      crt和key合并毛线???一个是证书一个是密匙,密匙是用来解密证书的!!!!
      真是醉了。
      Toyo2017-01-03 18:09 回复
  14. 当你要镜像的网站不开放 HTTP或者强制HTTPS 的时候,你就需要加上 SSL 来转成 HTTPS 了。 假设SSL证书文件位置是:/root/ssl.crt 假设SSL密匙文件位置是:/root/ssl.key 这个ssl具体怎么弄呢
    qiaizhe2017-01-03 13:47 回复
    • 通过这里生成CSR(泛域名请填写 *.baidu.com 这样的格式)和KEY(记得复制保存到本地,后缀.key),然后把CSR提交到这里,来申请SSL证书。
      然后这个网站会给你注册域名的邮箱发一个验证链接,点开链接然后会问你是否同意,你点第一个同意的按钮,然后就会把SSL证书发到你的邮箱,然后邮件里会有Alpha中级证书的链接。
      新建一个.crt格式的文件,然后把你的SSL证书复制进去,然后再把 Alpha中级证书加到最后面。
      这样你就有了 一个 .key密匙,一个.crt 证书文件了。CSR提交后就没用了。
      Toyo2017-01-03 14:55 回复
  15. 请问一下,有没有办法反向代理带有API的Orz...(比如日服的网游官网),反代过去一点登录帐号就跪了,二级域名不一样
    蕾姆Rem2016-12-04 02:15 回复
    • 这个比较麻烦,需要反向代理多个域名。
      Toyo2016-12-04 12:50 回复
  16. 标题 Nginxi 多了个 i,另外 Shadowsocks 服务端和 google 镜像有没有办法搭在一个 VPS 和一个域名上?
    2016-11-11 11:03 回复
    • 手误, Shadowsocks服务端和Google镜像是不冲突的,域名解析要分开。
      Toyo2016-11-11 13:16 回复
  17. 没有域名,只用ip行么
    kudy2016-11-07 20:34 回复
    • 可以
      如果是LNMP一键包,那么就不去添加虚拟主机了,直接修改nginx.conf中的server部分。
      /usr/local/nginx/conf/nginx.conf
      
      如果你是apt-get inst nginx安装的话,直接把文章中域名部分改成IP就行了。
      Toyo2016-11-07 22:12 回复
  18. Stoping nginx... nginx: [emerg] invalid number of arguments in "proxy_set_header" directive in /usr/local/nginx/conf/vhost/google.ipv7.top.conf:18 failed. Use force-quit Starting nginx... nginx (pid 3155 2985) already running. 这是为什么???
    etotakeo2016-10-19 14:11 回复
    • 你的镜像是用这个教程搭好的吗?
      2016-11-11 16:32 回复
  19. 如果打算做网站呢?用啥方法?
    gggo2016-08-19 21:01 回复
    • 什么意思?
      Toyo2016-08-20 00:05 回复
      • “当然,如果你仅仅拿来做镜像,没打算放网站,那就是用下面的方法。”文中是这样写的,但是我是想用来镜像自己的网站呢?比如日本镜像美国,域名查询出来的是日本而不是美国,然后就让搜索引擎收录其中一个网站
        gggo2016-08-23 09:12 回复
        • 该怎么做怎么做啊,镜像自己的网站和镜像别人的网站有什么区别?
          Toyo2016-08-23 17:03 回复
          • 好的,谢谢toyo大神,话说镜像会被收录吗?
            gggo2016-08-24 14:06 回复
            • 这一段是屏蔽搜索引擎收录的,不加就不会影响收录。
              if ($http_user_agent ~* (baiduspider|360spider|haosouspider|googlebot|soso|bing|sogou|yahoo|sohu-search|yodao|YoudaoBot|robozilla|msnbot|MJ12bot|NHN|Twiceler)) {
              return  403;
              }
              
              Toyo2016-08-24 16:16 回复
              • 好的,谢谢啦
                gggo2016-08-25 09:04 回复
  20. 楼主 你推荐的87主机如何搭建lnmp环境
    asan11482016-08-17 08:42 回复
    • 87主机是 免费 虚拟主机,不是VPS,只能建站,没有服务器ROOT的操作权限
      Toyo2016-08-17 09:38 回复
      • 有没有什么免费的能ROOT操作权限的主机?
        - -2016-09-01 18:38 回复

yVoC[UNLIMITȂ1~] ECirŃ|C Yahoo yV LINEf[^[Ōz500~`I


z[y[W ̃NWbgJ[h COiq 萔O~ył񂫁z COsیI COze