找回密码
立即注册
搜索
发新帖

16

积分

0

好友

2

主题
发表于 2025-10-6 01:04:55 | 查看: 156| 回复: 0
利用nginx的反向代理优势来镜像 HTTP(S)网站。


安装Nginx

LNMP一键包方式 安装Nginx当然,lnmp一键包我还是推荐 军哥的LNMP一键包 : https://lnmp.org/

这种方法适合 懒得折腾的人,虽然因为安装编译的东西很多,时间一般都在半小时以上,如果不急的话,可以使用这个。毕竟这个安装完了,方便管理,而且也不仅仅拿来做镜像用,还可以放其他网站。
注意:军哥的LNMP一键包在编译Nginx的是已经加上 --with-http_sub_module 扩展了,所以可以提换域名,而如果是别的一键安装包或者自己编译Nginx的话,你需要加上这个扩展。
如果,你暂时不需要其他的组件(Mysql php)那就先把他们关闭,只开启Nginx。
  1. lnmp stop
  2.     lnmp nginx start
复制代码

根据这个教程 添加虚拟主机 后,就根据下面的虚拟主机配置文件位置,找到你的配置文件,然后修改。
  1.     vi /usr/local/nginx/conf/vhost/www.abc.com.conf
  2.     # 自行套用为你的域名
  3.     # 打开后按 I键,进入编辑模式,然后套用最下面的配置文件示例,粘贴进去后,按 Esc键 退出编辑模式,然后输入 :wq 保存并退出。
复制代码
按照下面的示例修改完毕后就重启Nginx
  1. lnmp nginx restart
复制代码

配置文件示例

以下教程 域名以 www.abc.com 为例,被镜像网站以 www.baidu.com 为例
然后访问你的域名看一看是否成功镜像,需要注意的一点是,如果被镜像的网站设置了防盗链,那么静态文件(js/css/图片)可能无法显示,这就没办法了。
参数解释一般情况下只需要更改这几个参数。
  1. server_name 你的域名;
  2.      
  3.     sub_filter 欲被镜像的域名 你的域名;
  4.      
  5.     proxy_set_header Referer http://欲被镜像的域名;
  6.      
  7.     proxy_set_header Host 欲被镜像的域名;
  8.      
  9.     proxy_pass http://欲被镜像的域名;
复制代码

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

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

注意:不管你是镜像 www.baidu.com 还是 www.google.com.hk (不要直接使用 .com 会被谷歌自动根据VPS所在地区重定向的),他们两个目前都是强制重定向到 https ,这意味着如果你只配置了 http 反向代理,那么访问反向代理域名后会重定向到 https 的目标域名,所以你也必须配置 https 才行。
  1.     # 下面这段代码才是 HTTP 完整示例配置文件,注意使用时修改里面的默认域名等信息。
  2.     server
  3.             {
  4.                     listen 80;
  5.                     server_name www.abc.com;
  6.                    
  7.                     if ($http_user_agent ~* (baiduspider|360spider|haosouspider|googlebot|soso|bing|sogou|yahoo|sohu-search|yodao|YoudaoBot|robozilla|msnbot|MJ12bot|NHN|Twiceler)) {
  8.                     return  403;
  9.                     }
  10.       
  11.                     location / {
  12.                     sub_filter www.baidu.com www.abc.com;
  13.                     sub_filter_once off;
  14.                     proxy_set_header X-Real-IP $remote_addr;
  15.                     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  16.                     proxy_set_header Referer http://www.baidu.com;
  17.                     proxy_set_header Host www.baidu.com;
  18.                     proxy_pass http://www.baidu.com;
  19.                     proxy_set_header Accept-Encoding "";
  20.                     }
  21.     }
复制代码

HTTPS 示例当你要镜像的网站不开放 HTTP或者强制HTTPS 的时候,你就需要加上 SSL 来转成 HTTPS 了。
假设SSL证书文件位置是:/root/ssl.crt
假设SSL密匙文件位置是:/root/ssl.key
第二段的 301 代码是,强制走HTTPS,如果不需要可以去掉。
第三段是 屏蔽搜索引擎收录,比如镜像自己的网站,如果不屏蔽会导致 收录流失。

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

  1. proxy_set_header Referer https://www.baidu.com;
  2.     proxy_pass https://www.baidu.com;
复制代码
  1.     # 下面这段代码才是 HTTP 完整示例配置文件,注意使用时修改里面的默认域名等信息。
  2.     server
  3.             {
  4.                     listen 80;
  5.                     listen 443 ssl;
  6.                     ssl on;
  7.                     ssl_certificate /root/ssl.crt;
  8.                     ssl_certificate_key /root/ssl.key;
  9.                     ssl_session_cache shared:SSL:10m;
  10.                     ssl_session_timeout  10m;
  11.                     server_name www.abc.com;
  12.                     add_header Strict-Transport-Security "max-age=31536000";
  13.                    
  14.                     if ( $scheme = http ){
  15.                             return 301 https://$server_name$request_uri;
  16.                     }
  17.                    
  18.                     if ($http_user_agent ~* (baiduspider|360spider|haosouspider|googlebot|soso|bing|sogou|yahoo|sohu-search|yodao|YoudaoBot|robozilla|msnbot|MJ12bot|NHN|Twiceler)) {
  19.                     return  403;
  20.                     }
  21.       
  22.                     location / {
  23.                     sub_filter www.baidu.com www.abc.com;
  24.                     sub_filter_once off;
  25.                     proxy_set_header X-Real-IP $remote_addr;
  26.                     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  27.                     proxy_set_header Referer https://www.baidu.com;
  28.                     proxy_set_header Host www.baidu.com;
  29.                     proxy_pass https://www.baidu.com;
  30.                     proxy_set_header Accept-Encoding "";
  31.                     }
  32.     }
复制代码




您需要登录后才可以回帖 登录 | 立即注册

Archiver|手机版|小黑屋|AAWW论坛

GMT+8, 2025-10-22 06:04 , Processed in 0.050971 second(s), 20 queries .

Powered by aaww.net

管理员:[email protected]

快速回复 返回顶部 返回列表