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

Nginx反向代理配置异常:/wiremock路径后续请求返回404

问题排查与解决方案

问题出在两个核心点:WebApp(WireMock)不知道自身被挂载在Nginx的/wiremock路径下,导致内部生成的请求缺少前缀;同时原Nginx配置的匹配范围和转发规则存在局限。

修正后的Nginx配置

server {
    listen 8443 ssl;
    server_name localhost;

    access_log /dev/stdout;
    error_log /dev/stderr;

    ssl_certificate /etc/ssl/certs/self-signed-cert-for-instance.crt;
    ssl_certificate_key /etc/ssl/private/self-signed-cert-for-instance.key;

    # 匹配所有/wiremock开头的请求,覆盖后续子路径
    location /wiremock/ {
        # 移除/wiremock前缀,将剩余路径转发给WireMock
        rewrite ^/wiremock(/.*)$ $1 break;
        proxy_pass https://localhost:7443;
        
        # 传递必要的转发头,让WireMock感知外部访问前缀
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-Prefix /wiremock;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-For $remote_addr;
    }
}

关键调整说明

  1. 扩大location匹配范围:将location /wiremock/__admin改为location /wiremock/,确保所有以/wiremock/开头的请求(包括后续子路径如/wiremock/__admin/settings)都能被Nginx捕获转发。
  2. 调整rewrite规则:^/wiremock(/.*)$ $1确保精准移除/wiremock前缀,将正确的路径传递给WireMock。
  3. 添加X-Forwarded-Prefix头:WireMock会识别该头信息,生成内部链接时自动带上/wiremock前缀,避免后续请求直接跳转到/__admin路径。
  4. 可选补充:WireMock启动参数:如果WireMock版本较旧,可在启动时显式设置上下文路径:
    wiremock --context-path=/wiremock --port=7443
    
    让WebApp自身默认生成带/wiremock前缀的链接,配合Nginx转发更稳定。

验证步骤

  1. 重启Nginx加载新配置:nginx -s reload
  2. 访问https://localhost:8443/wiremock/__admin,查看Chrome控制台的后续请求是否均带有/wiremock前缀。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 23:09:59