多个位置的 NGINX 反向代理不起作用
NGINX reverse proxy for multiple locations not working
我正在尝试在 PM2 的帮助下在 EC2 实例中 运行 两个 express.js API 和使用 NGINX 的反向代理。请在下面找到 NGINX 配置,
NGINX config for the locations
我的意图是 运行 以下路线下的 2 APIs:
/
反向代理 localhost:3000
/local
反向代理 localhost:3001
为了让事情更清楚,我需要 URL 包含 /local
或 /local/
来代理端口 API 运行ning 16=]。但是,当我尝试点击 https://example.com/local
或 https://example.com/local/
时,响应是从端口 3000 中的 API 运行ning 接收的,而不是预期的代理。
这是在浏览器中尝试返回的响应:
Safari screenshot
所需的解决方案是成功配置 2 API 以分别使用来自 /
aka 根域和 /local
域的请求。但是两个请求都转到第一个。
PS。我还被建议使用一个技巧 - 尝试在配置文件中切换位置位置(即首先保持 /local
位置块,然后是 /
块),仍然没有运气 - 同样的行为。
反向代理可以很好地将请求重定向到正确的服务器,但是“/local”上的 运行 会转发包含“/local”的请求。所以存在的 express 应用程序在路由中查找 /local,但我发现它没有配置。所以有这样的东西。
app.get('/local', (req, res) => {
res.send('Hello World2!')
})
只需确保在 nginx 的“/local”处为 express 应用服务器中的所有路由添加前缀“/local”
和
"PS。我还被建议使用一个技巧 - 尝试在配置文件中切换位置位置(即首先保持 /local 位置块,然后是 / 块),仍然没有运气 - 相同行为。
以上是正确的配置,因为 nginx 会匹配并将请求重定向到第一个适用的块。因此,如果“/”位于“/local”之前,所有请求将被重定向到第一个 express 应用程序。
我正在尝试在 PM2 的帮助下在 EC2 实例中 运行 两个 express.js API 和使用 NGINX 的反向代理。请在下面找到 NGINX 配置,
NGINX config for the locations
我的意图是 运行 以下路线下的 2 APIs:
/
反向代理localhost:3000
/local
反向代理localhost:3001
为了让事情更清楚,我需要 URL 包含 /local
或 /local/
来代理端口 API 运行ning 16=]。但是,当我尝试点击 https://example.com/local
或 https://example.com/local/
时,响应是从端口 3000 中的 API 运行ning 接收的,而不是预期的代理。
这是在浏览器中尝试返回的响应:
Safari screenshot
所需的解决方案是成功配置 2 API 以分别使用来自 /
aka 根域和 /local
域的请求。但是两个请求都转到第一个。
PS。我还被建议使用一个技巧 - 尝试在配置文件中切换位置位置(即首先保持 /local
位置块,然后是 /
块),仍然没有运气 - 同样的行为。
反向代理可以很好地将请求重定向到正确的服务器,但是“/local”上的 运行 会转发包含“/local”的请求。所以存在的 express 应用程序在路由中查找 /local,但我发现它没有配置。所以有这样的东西。
app.get('/local', (req, res) => {
res.send('Hello World2!')
})
只需确保在 nginx 的“/local”处为 express 应用服务器中的所有路由添加前缀“/local”
和
"PS。我还被建议使用一个技巧 - 尝试在配置文件中切换位置位置(即首先保持 /local 位置块,然后是 / 块),仍然没有运气 - 相同行为。
以上是正确的配置,因为 nginx 会匹配并将请求重定向到第一个适用的块。因此,如果“/”位于“/local”之前,所有请求将被重定向到第一个 express 应用程序。