如何解决多个位置的 NGINX 反向代理不起作用
我正在尝试在 PM2 和反向代理的帮助下使用 Nginx 在 EC2 实例中运行两个 express.js API。请在下面找到 Nginx 配置,
NGINX config for the locations
我的意图是在以下路线下运行这 2 个 API:
-
/
反向代理localhost:3000
-
/local
反向代理localhost:3001
为了让事情更清楚,我需要包含 /local
或 /local/
的 URL 来代理在端口 3001
上运行的 API。但是,当我尝试点击 https://example.com/local
或 https://example.com/local/
时,响应是从在端口 3000 中运行的 API 而不是预期的代理收到的。
这是在浏览器中尝试时返回的响应:
所需的解决方案是成功配置 2 个 API 以分别使用来自 /
又名根域和 /local
域的请求。但是这两个请求都转到第一个。
附注。我还被告知了一个技巧 - 尝试在配置文件中切换位置位置(即首先保持 /local
位置块,然后是 /
块),但仍然没有运气 - 相同的行为。
解决方法
反向代理可以很好地将请求重定向到正确的服务器,但运行在“/local”上的请求会转发包含“/local”的请求。所以那里的快递应用程序在路由中寻找 /local ,但我发现它没有配置。所以有这样的事情。
app.get('/local',(req,res) => {
res.send('Hello World2!')
})
只需确保为来自nginx的'/local'的express应用服务器中的所有路由添加前缀'/local'
和
“PS。我还被告知了一个技巧 - 尝试在配置文件中切换位置位置(即首先保持 /local 位置块,然后是 / 块),仍然没有运气 - 相同的行为。”
以上将是正确的配置,因为 nginx 将匹配并将请求重定向到第一个适用的块。因此,如果 '/' 保留在 '/local' 之前,则所有请求都将被重定向到第一个 express 应用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。