我不知道如何正确地表述这个问题,但我很确定有人已经遇到过这个问题,而我只是不知道我应该寻找什么关键词。
以下是具体细节。我的 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 /prod
NGINX 中,即使我们确实这样做了,文件也会再次变得奇怪。
我们不确定这个问题的最佳解决方案,以及是否可以仅在一侧进行更改,或者必须同时更改 nginx + nodejs 前端。
如果有人有任何想法,请告诉我们。如果没有正确的关键字,寻找此问题的解决方案确实很困难。
谢谢。