【问题标题】:Service Worker prevents Nginx to match locationService Worker 阻止 Nginx 匹配位置
【发布时间】:2019-03-02 04:41:39
【问题描述】:

使用 Nginx,我在 /admin 上提供 CMS 应用程序,在 / 上提供带有 React Router 的 React 应用程序。

如果我检查 /admin 我可以看到 CMS。但是,如果我转到/(我看到应用程序的地方)然后我返回/admin,我会得到应用程序的404 页面。之后就无法查看 CMS。

再次查看 CMS 的唯一方法是清除浏览器历史记录并首先转到 /admin

如果我在终端上使用curl,但我无法复制问题。

我的猜测

Create-React-App 服务工作者在下载后会阻止其他位置

Nginx 配置

server {
    # ...some code

    root /home/myuser/app/build;

    location ~ ^/admin(/.*|$) {
        alias /home/myuser/admin/public$1;
        # ...some code
    }

    location / {
        try_files $uri $uri/ /index.html;
    }

    location ~ \.html?$ {
        expires 1d;
    }
}

【问题讨论】:

标签: reactjs nginx react-router create-react-app


【解决方案1】:

可以试试这个代码

server {
    # ...some code

    root /home/myuser/app/build;

    location / {
        try_files $uri $uri/ /index.html;
    }

    location /admin/ {
        alias /home/myuser/admin/public$1;
        # ...some code
    }

    ~ \.html?$ {
        expires 1d;
    }
}

【讨论】:

  • location ~ ^/admin(/.*|$) 是使用Passenger 所必需的。我不能改变它
【解决方案2】:

我最终按照Dan's comment 注销了 Service Worker。

import { unregister } from './registerServiceWorker';

// ...

unregister();

一旦完成 Nginx 配置就很荣幸了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-11
    相关资源
    最近更新 更多