Nginx 使用 react-router 4 忽略 /api location 指令,除了在 Firefox 隐私浏览



我有一个通过nginx提供的React应用程序,以及nginx反向代理后面的nodejs api服务器。nginx配置如下所示:

location / {
try_files $uri /index.html;
add_header   Cache-Control public;
}
location /api/ {
proxy_pass http://localhost:8000;
proxy_http_version 1.1;
}

在 Firefox 隐私浏览中,事情按预期工作:当我页面刷新/重定向到 domain.com/api 时,请求被代理到节点服务器。

但是,在非私有 Firefox 和 chrome(隐身 + 非(中,任何页面刷新/重定向到 domain.com/api 都会加载 react 应用程序并将/api 视为 react-router 路由。奇怪的是,如果我清除cookie/历史记录并将浏览器定向到 domain.com/api,我将正确代理到节点服务器。仅在我之前加载过一次反应应用程序后才会出现问题。

这让我发疯,有什么想法吗?我正在考虑将 react-router 降级到版本 3,但这需要一些重构,我不知道这是否能解决问题。

我现在通过从create-react-app样板中删除registerServiceWorker((来修复它。

最新更新