【发布时间】:2020-08-02 00:31:12
【问题描述】:
我有一个如下所示的 docker-compose 设置:
容器:
- 主要的 nginx 容器网关。 /todos/ 路由被 proxy_passed 到:
- 另一个 nginx 容器。这个代理传递给:
- React 前端(用于 todos 应用程序) 或
- 一个 node express api(处理 todo 逻辑)
我正在尝试使用 process.env.PUBLIC_URL + "/api" 从 React 应用程序调用 todos api,以便访问我的 express api 上的 "/" 路由。但是这不起作用,我必须在 React 调用中添加另一个“/”才能使其工作 - 像这样:process.env.PUBLIC_URL + /api/
注意:我的 React 主页设置为“/todos”
这显然是我如何重写 Nginx 上的路由的问题,但我已经尝试了所有组合,并且无法摆脱对尾随斜杠的需要。这是我的 Nginx 配置:
- 入口配置:
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/;
}
}
还有 todos 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 配置文件中, 和
location /api/
我已经尝试添加斜杠或删除斜杠以及许多其他组合。如果你知道我哪里出错了,那就太好了。
非常感谢,R
【问题讨论】:
标签: reactjs docker express nginx