【问题标题】:how to proxy_pass api path to port with nginx如何使用 nginx 将 api 路径代理到端口
【发布时间】:2025-12-03 10:35:01
【问题描述】:

我想proxy_pass根位置(/)到3000端口,/api位置到5000端口,是完全可以的,对吧?

我的 nginx 配置文件:

server {
listen       80;
server_name  mywebsite.com;

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

location / {
    proxy_pass http://localhost:3000;
}
}

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

myuser@myserver [conf.d]# curl localhost:5000
Hello, World!myuser@myserver [conf.d]#

但是使用 api 客户端则不需要,并且从根路径到端口 3000 的 proxy_pass 在浏览器和 api 客户端中可以正常工作

注意事项:

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

【问题讨论】:

  • 你也在发送 URI,所以你应该测试:curl http://localhost:5000/api

标签: http nginx port backend reverse-proxy


【解决方案1】:

我认为您正在使用 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;
    }
}

【讨论】:

  • 这正是我正在做的,谢谢,但现在我必须使用 apache
最近更新 更多