Nginx 非“基本”位置进入基本 proxy_pass,位置未被前端继承

Nginx 非“基本”位置进入基本 proxy_pass,位置未被前端继承

我不知道如何正确地表述这个问题,但我很确定有人已经遇到过这个问题,而我只是不知道我应该寻找什么关键词。

以下是具体细节。我的 https.conf 中有这个位置块:

    location ^~ /dev {

    allow all;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-Proto $scheme;

    proxy_http_version 1.1;
    proxy_set_header Connection "";

    rewrite ^/dev/(.*) /$1 break;

    proxy_pass https://server.name:port/;
  }

server.name是一个使用 node.js 运行的 Web 应用程序。

我们不能使用,location /因为另一个上游已经在使用与无关的根位置server.name

因此我们可以访问https://ourdomain.com/dev,并且加载index.js正常server.name。但问题出在文件位置。例如,在 中有一个链接。在 的index.js本地https://server.name/imagegallery访问server.name时,链接工作正常。但当通过 nginx 加载页面时,链接解析https://ourdomain.com/imagegallery为 404。主页所需的脚本也解析为 404,因此布局不正常。

我们尝试了以下解决方案,但它们太“肮脏”并且只会带来新的限制:

尝试 1
在 nodejs 的 next.config.js 中使用“assetPrefix”在端点的开头软包含“dev”。一开始它工作正常,直到我们在其中刷新页面https://ourdomain.com/imagegallery并发现它突然再次出现 404 错误。

第二次尝试
以某种方式将所有源文件放在“dev”目录下。但是,我们处理的文件结构将使这变得不切实际,并且我们稍后需要为生产环境创建一个新位置,该位置随后将位于location /prodNGINX 中,即使我们确实这样做了,文件也会再次变得奇怪。

我们不确定这个问题的最佳解决方案,以及是否可以仅在一侧进行更改,或者必须同时更改 nginx + nodejs 前端。

如果有人有任何想法,请告诉我们。如果没有正确的关键字,寻找此问题的解决方案确实很困难。

谢谢。

相关内容