› NGINX
› NGINX Trac
› 3rd Party Modules
› Security Advisories
› CHANGES
› OpenResty
› ngx_lua
› Tengine
在线学习资源
› NGINX 开发从入门到精通
NGINX Modules
› ngx_echo
imlinhanchao
V2EX  ›  NGINX

反向代理中文维基百科(包含手机版页面)

  •  
  •   imlinhanchao ·
    imlinhanchao · Jan 9, 2016 · 13469 views
    This topic created in 3954 days ago, the information mentioned may be changed or developed.

    前阵子在 vps 上弄了一个中文维基百科的反向代理,但是一直存在手机端不能用的问题(会跳转到手机版的维基百科)。刚刚终于把这个问题解决掉了: https://w.sxisa.org
    https 的证书是用的 Let's Encrypt
    下面是 nginx 的配置:

    server {
      server_name w.sxisa.org;
      listen 80;
      rewrite ^/(.*) https://$server_name/$1 permanent;
    }
    
    server {
      server_name w.sxisa.org;
      listen 443;
    
      ssl on;
      ssl_certificate      证书;
      ssl_certificate_key  证书;
    
      location / {
        proxy_pass https://zh.wikipedia.org;
        proxy_buffering off;
    
        proxy_cookie_domain zh.wikipedia.org w.sxisa.org;
        proxy_redirect https://zh.wikipedia.org/ /;
        proxy_redirect https://zh.m.wikipedia.org/ https://m.w.sxisa.org/;
    
        proxy_set_header X-Real_IP $remote_addr;
        proxy_set_header User-Agent $http_user_agent;
        proxy_set_header Accept-Encoding ''; 
        proxy_set_header referer "https://zh.wikipedia.org$request_uri";
    
        subs_filter_types text/css text/xml text/javascript;
        subs_filter '维基百科' '创软维基百科镜像';
        subs_filter zh.wikipedia.org w.sxisa.org;
        subs_filter upload.wikimedia.org up.w.sxisa.org;
        subs_filter zh.m.wikipedia.org m.w.sxisa.org;
      }
      location https://zh.m.wikipedia.org/{
        rewrite ^/(.*) https://m.w.sxisa.org/$1 permanent;
      }
    }
    
    server {
      server_name m.w.sxisa.org;
      listen 80;
      rewrite ^/(.*) https://$server_name/$1 permanent;
    }
    
    server {
      server_name m.w.sxisa.org;
      listen 443;
    
      ssl on;
      ssl_certificate      证书;
      ssl_certificate_key  证书;
    
      location / {
        proxy_pass https://zh.m.wikipedia.org;
        proxy_buffering off;
    
        proxy_redirect https://zh.m.wikipedia.org/ /;
        proxy_cookie_domain zh.m.wikipedia.org m.w.sxisa.org;
    
        proxy_set_header X-Real_IP $remote_addr;
        proxy_set_header User-Agent $http_user_agent;
        proxy_set_header Accept-Encoding ''; 
        proxy_set_header referer "https://zh.m.wikipedia.org$request_uri";
    
        subs_filter_types text/css text/xml text/javascript;
        subs_filter '维基百科' '创软维基百科镜像';
        subs_filter zh.wikipedia.org w.sxisa.org;
        subs_filter zh.m.wikipedia.org m.w.sxisa.org;
        subs_filter upload.wikimedia.org up.w.sxisa.org;
      }
    }
    
    server {
      server_name up.w.sxisa.org;
      listen 80;
      rewrite ^/(.*) https://$server_name/$1 permanent;
    }
    
    erver {
      server_name up.w.sxisa.org;
      listen 443;
    
      ssl on;
      ssl_certificate      证书;
      ssl_certificate_key  证书;
    
      location / {
        proxy_pass https://upload.wikimedia.org;
        proxy_cookie_domain upload.wikimedia.org up.w.sxisa.org;
        proxy_buffering off;
        proxy_set_header X-Real_IP $remote_addr;
        proxy_set_header User-Agent $http_user_agent;
        proxy_set_header referer "https://upload.wikimedia.org$request_uri";
      }
    }
    
    28 replies  •  2017-04-21 13:10:40 +08:00
    Tink
    Tink
    Jan 9, 2016 via iPhone
    1
    我也反代了一个,手机版貌似也有问题,就没管
    just1
    just1
    Jan 9, 2016 via Android
    2
    做一个通用反代规则就可以了,所以网站自动反代
    marenight
    marenight
    Jan 9, 2016
    3
    手机浏览器拦截了,报告隐私风险。
    chunchu
    chunchu
    Jan 9, 2016 via iPhone
    5
    最下面的 server 前面少了一个字母 s
    leakeung
    leakeung
    Jan 9, 2016
    6
    过断 mark 赞
    imlinhanchao
    imlinhanchao
    OP
    Jan 9, 2016 via Android
    7
    @marenight 难道证书不认?
    @chunchu 哈~可能贴上来不小心删到了。
    @just1 好像可行,回头试试。
    chunchu
    chunchu
    Jan 9, 2016
    8
    期待楼主对所有语言的反代
    bdbai
    bdbai
    Jan 9, 2016 via iPhone
    10
    感觉中文版只是 DNS 污染,换个 DNS 就能访问了。
    imlinhanchao
    imlinhanchao
    OP
    Jan 9, 2016
    11
    @bdbai 用 hosts 确实可以访问,不过图片不知道为啥看不了。
    bdbai
    bdbai
    Jan 9, 2016 via iPhone
    12
    @imlinhanchao 图片用的域名也得改 host ,不过改个 DNS 就一劳永逸了。
    Khlieb
    Khlieb
    Jan 9, 2016 via Android
    13
    @bdbai DNSᴄʀʏᴘᴛ 无压力
    Guenlay
    Guenlay
    Jan 9, 2016
    14
    multy subs_filter 似乎是 1.9.3 以后才支持
    Slienc7
    Slienc7
    Jan 9, 2016
    15
    为何不直接上数据库做镜像。
    chunchu
    chunchu
    Jan 9, 2016
    16
    nginx version: nginx/1.9.3

    测试了一下,图片不能正确显示,我看楼主的图片可以正常显示,不知道是什么原因。
    chunchu
    chunchu
    Jan 9, 2016
    17
    找到原因了,我的 wildcard 只能对*.xxx.org 有效,对 up.w.xxx.org 不能识别为安全连接
    bumz
    bumz
    Jan 10, 2016
    18
    @Khlieb 这是什么字符?ᴀ ʙ ᴄ ᴅ ᴇ ғ ɢ ʜ ɪ ᴊ ᴋ ʟ ᴍ ɴ ᴏ ᴘ ǫ ʀ s ᴛ ᴜ ᴠ ᴡ x ʏ ᴢ
    Khlieb
    Khlieb
    Jan 10, 2016 via Android
    19
    @bumz 这是小型大写字母, Unicode 里面有独立的字符,但有些字体可以用 OpenType 变换出来。
    Khlieb
    Khlieb
    May 7, 2016 via Android
    21
    手机版 502 了
    Khlieb
    Khlieb
    Jun 21, 2016
    22
    全站 404 了
    imlinhanchao
    imlinhanchao
    OP
    Sep 9, 2016
    23
    @chunchu https://github.com/imlinhanchao/ngx_proxy_wiki 所有语言的反代。(时隔多年,终于填坑
    Michael2002
    Michael2002
    Feb 14, 2017
    24
    @bdbai 怎么改 DNS ?
    bdbai
    bdbai
    Feb 14, 2017 via Android
    25
    @Michael2002 网上搜一下公共 DNS
    Michael2002
    Michael2002
    Mar 23, 2017
    26
    @bdbai 换什么 DNS 呢?
    Michael2002
    Michael2002
    Mar 23, 2017
    27
    @bdbai 感觉很多 DNS 都不咋地
    Michael2002
    Michael2002
    Apr 21, 2017
    28
    @bdbai 在吗?
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4902 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 69ms · UTC 01:20 · PVG 09:20 · LAX 17:20 · JFK 20:20
    ♥ Do have faith in what you're doing.