繁体   English   中英

Nginx 代理通行证问题 - Docker,React 和 Express

[英]Nginx Proxy Pass Issue - Docker, React and Express

我有一个 docker-compose 设置,如下所示:

容器:

  1. 主nginx容器网关。 /todos/ 路由是 proxy_passed 到:
  2. 另一个 nginx 容器。 这个代理传递给:
  3. 一个 React 前端(用于 todos 应用程序)或
  4. 一个节点 express api(处理 todo 逻辑)

我正在尝试使用 process.env.PUBLIC_URL +“/api”从 React 应用程序调用 todos api,以便访问我的 express api 上的“/”路由。 但是这不起作用,我必须在 React 调用中添加另一个“/”才能使其工作 - 像这样:process.env.PUBLIC_URL + /api/

注意:我的 React 主页设置为“/todos”

这显然是我如何对 Nginx 上的路线进行重写的问题,但我已经在阳光下尝试了所有组合,并且无法摆脱对斜杠的需要。 这是我的 Nginx 配置:

  1. 入口配置:
upstream todosnginx {
    server todosnginx;
}

server {
    listen 80;
    error_page 404 /404.html;

    location / {
        root /usr/share/nginx/html;
        index index.html index.htm;
    }

    location /todos {
        rewrite /todos/(.*) /$1 break;
        proxy_intercept_errors on;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://todosnginx/;
    }

}

还有待办事项 nginx:

upstream todoclient {
    server todoclient:3000;
}

upstream todoserver {
    server todoserver:9000;
}

server {
    listen 80;

    location / {
        proxy_pass http://todoclient/;
    }

    location /sockjs-node {
        proxy_pass http://todoclient;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
    }

    location /api {
        rewrite /api/(.*) /$1 break;
        proxy_pass http://todoserver/;
    }

}

我试过做:

rewrite /api(.*) /$1 break;

在 todosnginx conf中,和

location /api/

我尝试添加斜杠或删除斜杠和许多其他组合。 如果你知道我在哪里出错了,那就太好了。

非常感谢, R

重写 /api(.*) $1 break;

如果它不起作用,请发布日志。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM