镜像域名: doub.bid 提供给无翻墙能力的人使用~ 有能力的建议访问主域名(注意把"点"改为".") doub点io
投稿文章 | 广告投放 | Telegram 群组 / 公告频道

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

网络资源 Toyo 27评论
文章目录
[显示]
本文最后更新于 2016年11月15日 21:48 可能会因为没有更新而失效。如已失效或需要修正,请留言!

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

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


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

安装Nginx

安装Nginx有三种方式:编译、apt-get、直接安装lnmp一键包

在这里就介绍后两种吧,虽然lnmp一键包也是属于编译。

LNMP一键包

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

  1. LNMP一键包安装教程
  2. 添加虚拟主机

这种方法适合 懒得折腾的人,虽然因为安装编译的东西很多,时间一般都在半小时以上,如果不急的话,可以使用这个。毕竟这个安装完了,方便管理,而且也不仅仅拿来做镜像用,还可以放其他网站。

注意:军哥的LNMP一键包在编译Nginx的是已经加上 --with-http_sub_module 扩展了,所以可以提换域名,而如果是别的一键安装包或者自己编译Nginx的话,你需要加上这个扩展。

当然,如果你仅仅拿来做镜像,没打算放网站,那就是用下面的方法。

apt-get install nginx

这种直接从 apt-get 安装的方式,优点是 比编译安装速度快多了,一般不到两分钟就完成了。

系统要求:Debian 7

echo "deb http://packages.dotdeb.org wheezy all" >> /etc/apt/sources.list
apt-get update
apt-get install nginx
# 安装会提示输入两次 Y 来继续安装。

安装完毕之后输入 nginx -v ,查看nginx的版本,确定是否安装完成。

修改配置文件

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

LNMP一键包

如果,你暂时不需要其他的组件(Mysql php)那就先把他们关闭,只开启Nginx。

lnmp stop
lnmp nginx start

根据这个教程 添加虚拟主机 后,就根据下面的虚拟主机配置文件位置,找到你的配置文件,然后修改。

vi /usr/local/nginx/conf/vhost/go.doubi.date.conf
# 自行套用为你的域名

按照下面的示例修改完毕后就重启Nginx

lnmp nginx restart

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

apt-get install nginx

找到下面这个文件,然后修改。

vi /etc/nginx/sites-available/default

按照下面的示例修改完毕后就重启Nginx

service nginx restart

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

HTTP 示例

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

server_name 你的域名;

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

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

proxy_set_header Host 欲被镜像的域名

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

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

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

server
	{
		listen 80;
		server_name go.doubi.date;
		
		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 go.doubi.date;
		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
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 go.doubi.date;
		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 go.doubi.date;
		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)网站 的方法
责任声明:本站一切资源均原创或收集自互联网,仅作交流学习之用,请勿用作商业!如造成任何后果,本站概不负责!

赞 (12)or打赏
发表我的评论
取消评论
表情

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

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(27)个小伙伴在吐槽
  1. 逗比大佬,如果想要加入缓存,来做一个CDN,应该怎么做
    AFR2017-05-23 21:56 回复
  2. 要是主站突然出现故障,镜像站能打开么?我想弄异地容灾
    doubi2017-04-29 01:02 回复
    • 不能,这个方法只是反向代理,没有缓存或者同步网站文件的功能。。。
      Toyo2017-04-29 01:10 回复
      • 那有什么办法同步网站的文件呢?
        doubi2017-04-29 01:16 回复
  3. 你好! 然后把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 回复
  4. 当你要镜像的网站不开放 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 回复
  5. 请问一下,有没有办法反向代理带有API的Orz...(比如日服的网游官网),反代过去一点登录帐号就跪了,二级域名不一样
    蕾姆Rem2016-12-04 02:15 回复
    • 这个比较麻烦,需要反向代理多个域名。
      Toyo2016-12-04 12:50 回复
  6. 标题 Nginxi 多了个 i,另外 Shadowsocks 服务端和 google 镜像有没有办法搭在一个 VPS 和一个域名上?
    2016-11-11 11:03 回复
    • 手误, Shadowsocks服务端和Google镜像是不冲突的,域名解析要分开。
      Toyo2016-11-11 13:16 回复
  7. 没有域名,只用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 回复
  8. 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 回复
  9. 如果打算做网站呢?用啥方法?
    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 回复
  10. 楼主 你推荐的87主机如何搭建lnmp环境
    asan11482016-08-17 08:42 回复
    • 87主机是 免费 虚拟主机,不是VPS,只能建站,没有服务器ROOT的操作权限
      Toyo2016-08-17 09:38 回复
      • 有没有什么免费的能ROOT操作权限的主机?
        - -2016-09-01 18:38 回复