我有一个通过 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 时,请求被代理到 Node 服务器。
但是,在非私有(private) firefox 和 chrome(隐身 + 非)中,任何页面刷新/重定向到 domain.com/api 都会加载 react 应用程序并将/api 视为 react 路由器路由。奇怪的是,如果我清除 cookies/历史并将我的浏览器指向 domain.com/api,我将正确地被代理到 Node 服务器。只有在我之前加载过一次 React 应用程序后才会出现此问题。
这让我发疯,有什么想法吗?我正在考虑将 react-router 降级到版本 3,但这需要进行一些重构,我不知道这是否能解决问题。
最佳答案
我现在通过从 create-react-app 样板中删除 registerServiceWorker() 来修复它。
关于javascript - Nginx 忽略/api 位置指令与 react-router 4,除了在 firefox 隐私浏览中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45538066/