Nginx - 无法说服/app 表现得像/app/(相对路径混乱)
Nginx - Cannot convince /app to behave like /app/ (relative path mayhem)
例子
如果您导航至 https://aiogames.com/chart, none of the relative path sources (i.e., graph.js) resolves. To see the desired result visit https://aiogames.com/chart/。这是因为当相对路径解析为基础 URL、查询 NGINX 而不是应用程序和空资源时,资源托管在单独的(节点)应用程序而不是 NGINX 中。
除了 /etc/nginx/servers_enabled 之外,NGINX 设置是默认设置。
在“位置/”块下的 ssl 服务器部分,我添加了以下内容:
#Section to enable node application chart on port 3000
location /chart {
proxy_pass http://localhost:3000/;
}
问题
我需要节点应用程序与 NGINX 设置无关(没有硬链接,如果我将基础 URL 重定向到应用程序,应该会起到同样的作用)。有什么方法可以配置 NGINX 将 /chart 视为一个目录(与 /chart/ 相同)?或者我应该如何设置它,以便 /chart 转发到 /chart/?
其他背景
我对 NGINX 比较陌生。虽然我立即看到了这个错误并理解它是由我的配置和相对路径名引起的,但我用来配置 NGINX 的文档并没有给出一个干净的(更不用说优雅的)解决方案了。我找到的许多答案都建议使用绝对链接或将数据复制到 NGINX,这可能不是一个好的或合理的做法。
测试在本地进行,就像应用程序在其自己的基础上一样 URL,因此该错误仅在实际部署时才明显。
我很感激任何方向。
谢谢
我认为你把问题复杂化了。
应该有一个规范 URL,让它成为带有斜线的那个。
设置 NGINX 以从 non-slash 重定向到规范 URL:
location = /chart {
return 301 /chart/;
}
例子
如果您导航至 https://aiogames.com/chart, none of the relative path sources (i.e., graph.js) resolves. To see the desired result visit https://aiogames.com/chart/。这是因为当相对路径解析为基础 URL、查询 NGINX 而不是应用程序和空资源时,资源托管在单独的(节点)应用程序而不是 NGINX 中。
除了 /etc/nginx/servers_enabled 之外,NGINX 设置是默认设置。 在“位置/”块下的 ssl 服务器部分,我添加了以下内容:
#Section to enable node application chart on port 3000
location /chart {
proxy_pass http://localhost:3000/;
}
问题
我需要节点应用程序与 NGINX 设置无关(没有硬链接,如果我将基础 URL 重定向到应用程序,应该会起到同样的作用)。有什么方法可以配置 NGINX 将 /chart 视为一个目录(与 /chart/ 相同)?或者我应该如何设置它,以便 /chart 转发到 /chart/?
其他背景
我对 NGINX 比较陌生。虽然我立即看到了这个错误并理解它是由我的配置和相对路径名引起的,但我用来配置 NGINX 的文档并没有给出一个干净的(更不用说优雅的)解决方案了。我找到的许多答案都建议使用绝对链接或将数据复制到 NGINX,这可能不是一个好的或合理的做法。
测试在本地进行,就像应用程序在其自己的基础上一样 URL,因此该错误仅在实际部署时才明显。
我很感激任何方向。
谢谢
我认为你把问题复杂化了。
应该有一个规范 URL,让它成为带有斜线的那个。
设置 NGINX 以从 non-slash 重定向到规范 URL:
location = /chart {
return 301 /chart/;
}