nginx:如何在 proxy_pass 指令中将 URI 路径添加到主机?

nginx:如何在 proxy_pass 指令中将 URI 路径添加到主机?

问题:

  • 我使用 nginx指令将URI 中具有特定路径的请求proxy_pass重定向到。httpslocationhttps://domain/path/index.htmlhttp://container_ip:port/index.html
  • 这对于初始请求来说非常有效。
  • 但是,如果 HTML 文件指定了要加载的资源,客户端则不需要路径,只使用基本 URL 来搜索这些资源;在示例中https://domain/main.css

问题:
我如何配置 nginx 以便也在原始路径中搜索此类资源;在示例中https://domain/path/main.css

当前错误的 nginx 配置:

server {
    listen 443 ssl;
    server_name domain;

    [...]

    location /path/ {
        proxy_set_header Host $host;
        proxy_pass http://container_ip:port/;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_set_header X-Forwarded-For $remote_addr;
    }
}

答案1

资源路径由您的应用程序生成。正确且可靠的方法是修复您的应用程序以生成具有正确路径的资源 URL。

如果你想要一个不可靠的解决方案,你可以尝试使用http://nginx.org/en/docs/http/ngx_http_sub_module.html替换 nginx 代理的响应中的资源 URL。但是,这可能会产生难以诊断的不良副作用。

相关内容