V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
xiaoz
V2EX  ›  NGINX

nginx 反向代理替换图片的问题

  •  
  •   xiaoz ·
    helloxz · 2016-05-28 19:08:16 +08:00 · 7345 次点击
    这是一个创建于 2861 天前的主题,其中的信息可能已经有所发展或是发生改变。

    a.com 中包含一张图片 b.com ,我用 c.com 去反代 a.com ,但是想把反代后的结果调用的图片 b.com 替换为其它图片,使用subs_filter b.com/123.jpg c.com/456.jpg;不起作用,请问应该怎样替换 a.com 域名中的图片地址 b.com

    第 1 条附言  ·  2016-05-28 20:12:29 +08:00

    完整配置文件如下,需求是将http://search.xiaoz.me中包含的图片http://pic.bsdev.cn替换为HTTPS:https://pic.bsdev.cn

    server
    {
            listen 443;
            server_name so.xiaoz.me;
            ssl on;
            ssl_certificate /etc/letsencrypt/live/so.xiaoz.me/fullchain.pem;
            ssl_certificate_key /etc/letsencrypt/live/so.xiaoz.me/privkey.pem;
            location / {
                    proxy_redirect off;
                    proxy_set_header X-Real-IP $remote_addr;
                    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                    proxy_set_header X-Forwarded-Proto https;
                    proxy_pass http://search.xiaoz.me;
                    subs_filter_types text/html text/css text/xml;
                    subs_filter http://pic.bsdev.cn https://pic.bsdev.cn;
            }
    }
    server
    {
            listen 80;
            server_name so.xiaoz.me;
            rewrite ^(.*) https://so.xiaoz.me$1 permanent;
    }
    
    第 2 条附言  ·  2016-05-28 22:48:37 +08:00

    此贴终结,无法使用subs_filter替换的原因是开启了Gzip导致,6楼回复正解。在location中加入proxy_set_header Accept-Encoding "";,重启nginx后完美解决。被坑了几个小时

    17 条回复    2016-05-29 20:01:31 +08:00
    SeeMeTomorrow
        1
    SeeMeTomorrow  
       2016-05-28 19:48:05 +08:00 via iPhone
    建议把完整配置文件贴上来
    lslqtz
        2
    lslqtz  
       2016-05-28 19:59:36 +08:00
    subs?不是 sub 嘛?
    xiaoz
        3
    xiaoz  
    OP
       2016-05-28 20:13:07 +08:00
    @SeeMeTomorrow 您好,完整配置文件已经贴上来了,谢谢。
    xiaoz
        4
    xiaoz  
    OP
       2016-05-28 20:14:11 +08:00
    @lslqtz 不知道新版本中是否将 sub 改成了 subs ,因为我使用 sub 的时候报语法错误,根据官方的帮助文档: https://www.nginx.com/resources/wiki/modules/substitutions/?highlight=subs_filter 来看的话也是使用的 subs
    lslqtz2
        5
    lslqtz2  
       2016-05-28 20:22:39 +08:00
    @xiaoz 应该是我们模块不同?不清楚,我这边保存的文档说是 sub 测试有效
    http://www.ttlsa.com/linux/nginx-modules-ngx_http_sub_module/
    tammy
        6
    tammy  
       2016-05-28 20:24:21 +08:00   ❤️ 2
    ```
    proxy_set_header Accept-Encoding "";#关闭 Gzip 是 subs_filter 能正常工作
    ```

    来自: http://blog.iplayloli.com/nginx-reserve-proxy-google-gravatar.html

    话说怎么高亮代码?
    Tink
        7
    Tink  
       2016-05-28 20:42:26 +08:00 via iPhone
    我感觉没什么问题
    xiaoz
        8
    xiaoz  
    OP
       2016-05-28 20:47:10 +08:00
    @Tink 但实际没有替换成功
    xiaoz
        9
    xiaoz  
    OP
       2016-05-28 20:48:26 +08:00
    @tammy V2 的回复不支持 markdown ,所以高亮不了,发表主题的话是支持 markdown 的
    xiaoz
        10
    xiaoz  
    OP
       2016-05-28 20:49:16 +08:00
    @lslqtz2 你 nginx 哪个版本的呢?我是按照官方文档安装的那个模块
    xiaoz
        11
    xiaoz  
    OP
       2016-05-28 22:46:46 +08:00
    @tammy 感谢回复,终于排查到原因就是因 Gzip 影响导致 subs_filter 不起作用,关闭 Gzip 后终于正常了,非常感谢。
    lslqtz
        12
    lslqtz  
       2016-05-28 23:46:48 +08:00
    @xiaoz 最新。
    lslqtz
        13
    lslqtz  
       2016-05-28 23:47:42 +08:00
    @tammy 忘了 gzip ,我也来感谢一下。
    @xiaoz 我表示不关 gzip 也能用,所以就没有在意。
    fakefish
        14
    fakefish  
       2016-05-29 17:29:04 +08:00
    图片就不要 gzip 了嘛 没用
    xiaoz
        15
    xiaoz  
    OP
       2016-05-29 18:57:43 +08:00 via iPhone
    @fakefish 不是图片 gzip 是整个网页中用了,导致 subs_filter 对整个网页不起作用。
    Daniel65536
        16
    Daniel65536  
       2016-05-29 19:43:59 +08:00   ❤️ 1
    proxy_set_header Accept-Encoding ""浪费流量。
    应该上 ngx_http_gunzip_module ,用 proxy_pass 来中转下就好,可以大幅度节约流量开支。
    xiaoz
        17
    xiaoz  
    OP
       2016-05-29 20:01:31 +08:00 via iPhone
    @Daniel65536 好的,多谢指点
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5479 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 06:04 · PVG 14:04 · LAX 23:04 · JFK 02:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.