You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Nginx以在代理访问微站点时保留location路径

Nginx代理微站点路径跳转问题解决方法

问题核心是后端微站点生成的站内链接未包含Nginx代理的/dev前缀,导致点击链接时路径错误。以下是可行的解决办法:

方法一:使用Nginx sub_filter 修改响应内容中的链接

这是无需修改后端代码的最优方案,通过替换后端返回内容里的路径前缀,让站内链接自动带上/dev。

修改/etc/nginx/conf.d/pdf.conf中的location配置:

location /dev/pdf {
    proxy_pass https://pdf-dev/pdf;
    # 传递必要的请求头,确保后端能正确处理请求
    proxy_set_header Host $host;
    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 $scheme;

    # 将后端返回的所有/pdf/路径替换为/dev/pdf/
    sub_filter '/pdf/' '/dev/pdf/';
    sub_filter_once off; # 替换所有匹配项,而非仅第一个
    # 指定需要处理的内容类型,覆盖常见的网页资源
    sub_filter_types text/html text/css text/javascript application/json;
}

注意事项:

  • 确认Nginx已安装ngx_http_sub_module模块,可通过nginx -V命令查看,输出中包含--with-http_sub_module即表示支持。若未安装,需重新编译Nginx并添加该模块。
  • 如果后端生成的链接是相对路径(如about而非/pdf/about),可能需要调整sub_filter的匹配规则,但绝大多数场景下绝对路径的替换即可解决问题。

方法二:修改后端微站点的基础路径(若允许)

如果有权限修改后端微站点的配置,可将其部署的基础URL设置为/dev/pdf,这样后端生成的所有站内链接都会自动带上该前缀,无需Nginx额外处理。但此方法仅适用于可自主修改的后端服务。

方法三:结合rewrite的路径转发配置(辅助方案)

若需要调整请求路径的转发逻辑,可配合rewrite指令使用,但仍需结合sub_filter处理站内链接:

location /dev/pdf {
    rewrite ^/dev/pdf(.*)$ /pdf$1 break;
    proxy_pass https://pdf-dev;
    # 同样添加proxy_set_header和sub_filter配置
    proxy_set_header Host $host;
    sub_filter '/pdf/' '/dev/pdf/';
    sub_filter_once off;
}

内容的提问来源于stack exchange,提问作者Arun Ghanta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 15:43:24