如何使用 nginx proxy_pass api 路径到端口

May*_*Dev 1 port reverse-proxy http backend nginx

我想将根位置 (/) 代理传递到端口 3000,将 /api 位置代理传递到端口 5000,这是完全可能的,对吗?

我的 nginx 配置文件:

server {
listen       80;
server_name  mywebsite.com;

location /api {
    proxy_pass http://localhost:5000;
}

location / {
    proxy_pass http://localhost:3000;
}
}
Run Code Online (Sandbox Code Playgroud)

如果我在本地执行 api 请求,我可以获得预期的输出:

myuser@myserver [conf.d]# curl localhost:5000
Hello, World!myuser@myserver [conf.d]#
Run Code Online (Sandbox Code Playgroud)

但对于 api 客户端则不然,从根路径到端口 3000 的 proxy_pass 在浏览器和 api 客户端中工作正常

笔记:

  • 我没有忘记重新加载 nginxsudo systemctl reload nginx
  • 防火墙允许两个端口中的流量,我正在使用ufw
  • 服务器操作系统是centos 7

小智 6

我认为你正在使用 React 和 Nodejs。我使用下面的配置。

server {
listen       80;
server_name  mywebsite.com;
location / {
# My react 
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
}

location /api{
# This is my nodejs API 
        proxy_pass http://localhost:5000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}
Run Code Online (Sandbox Code Playgroud)