Pages

Sunday, 14 May 2017

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

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

HTTP 示例

一般情况下只需要更改这几个参数。
  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://欲被镜像的域名
以下示例是以urdomain.com镜像 www.baidu.com 为例。自行替换 其中的参数:
第二段是 屏蔽搜索引擎收录,比如镜像自己的网站,如果不屏蔽会导致 收录流失。
  1. server
  2. {
  3. listen 80;
  4. server_name urdomain.com;
  5. if ($http_user_agent ~* (baiduspider|360spider|haosouspider|googlebot|soso|bing|sogou|yahoo|sohu-search|yodao|YoudaoBot|robozilla|msnbot|MJ12bot|NHN|Twiceler)) {
  6. return 403;
  7. }
  8. location / {
  9. sub_filter www.baidu.com urdomain.com;
  10. sub_filter_once off;
  11. proxy_set_header X-Real-IP $remote_addr;
  12. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  13. proxy_set_header Referer http://www.baidu.com
  14. proxy_set_header Host www.baidu.com
  15. proxy_pass http://www.baidu.com
  16. proxy_set_header Accept-Encoding "";
  17. }
  18. }

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. server
  2. {
  3. listen 80;
  4. listen 443 ssl;
  5. ssl on;
  6. ssl_certificate /root/ssl.crt;
  7. ssl_certificate_key /root/ssl.key;
  8. ssl_session_cache shared:SSL:10m;
  9. ssl_session_timeout 10m;
  10. server_name urdomain.com;
  11. add_header Strict-Transport-Security "max-age=31536000";
  12. if ( $scheme = http ){
  13. return 301 https://$server_name$request_uri;
  14. }
  15. if ($http_user_agent ~* (baiduspider|360spider|haosouspider|googlebot|soso|bing|sogou|yahoo|sohu-search|yodao|YoudaoBot|robozilla|msnbot|MJ12bot|NHN|Twiceler)) {
  16. return 403;
  17. }
  18. location / {
  19. sub_filter www.baidu.com urdomain.com;
  20. sub_filter_once off;
  21. proxy_set_header X-Real-IP $remote_addr;
  22. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  23. proxy_set_header Referer https://www.baidu.com
  24. proxy_set_header Host www.baidu.com
  25. proxy_pass https://www.baidu.com
  26. proxy_set_header Accept-Encoding "";
  27. }
  28. }

No comments:

Post a Comment