微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

多个位置的 NGINX 反向代理不起作用

如何解决多个位置的 NGINX 反向代理不起作用

我正在尝试在 PM2 和反向代理的帮助下使用 Nginx 在 EC2 实例中运行两个 express.js API。请在下面找到 Nginx 配置,

NGINX config for the locations

我的意图是在以下路线下运行这 2 个 API:

  1. / 反向代理 localhost:3000
  2. /local 反向代理 localhost:3001

为了让事情更清楚,我需要包含 /local/local/ 的 URL 来代理在端口 3001 上运行的 API。但是,当我尝试点击 https://example.com/localhttps://example.com/local/ 时,响应是从在端口 3000 中运行的 API 而不是预期的代理收到的。

这是在浏览器中尝试时返回的响应:

Safari screenshot

所需的解决方案是成功配置 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 举报,一经查实,本站将立刻删除。