首页 > 解决方案 > Nginx 子文件夹 admin react app 在 main react app 下

问题描述

我有一种情况,我有两个应用程序在反应中开发。

我构建了这两个应用程序并将用户应用程序构建放在site目录中,其中管理员应用程序构建在site/admin目录内

我想要的是

当有人尝试时www.mydomain.com/admin,它应该转到 admin 目录,如果 url 中没有给出 admin 那么它不应该寻找 admin 而是应该提供用户文件。

我愿意以任何可能的方式更改目录结构以使此 url 按预期工作。

我付出了很多时间和尝试,但未能取得成果。我遗漏了一些东西,可能与try_files配置有关,但我还不确定。

以下是我迄今为止为我的需要创建的 Nginx 文件。

如果我写mydomain.org/admin,它工作正常。

但是当我写的时候mydomain.org/admin/{someotherparam e-g dashboard},它会加载主用户反应应用程序而不是管理应用程序。我猜在这种情况下它会读取用户的索引文件。/admin/如果首先在 url 中,如何读取 admin 的索引文件。

我对nginx配置知之甚少,我确实尝试过google。

如果我将管理目录和用户目录分开,我只剩下一项任务要做。但是我将不得不做我不想要的 domain.org/user 和 domain.org/admin。我希望管理员仅在 url 之后的 url 中有管理员时才做出反应。

我不知道如何让它发挥作用。

server {
    listen 80;
    listen [::]:80;

    # Add index.php to the list if you are using PHP
    index index.html index.htm index.nginx-debian.html;

    server_name mydomain.org www.mydomain.org;

    location / {
        root /var/www/mydomain.org/html/frontend/site;
        try_files $uri $uri/ /index.html;
    }

    location /admin(.*) {
        root /var/www/mydomain.org/html/frontend/site/admin;
        try_files $uri $uri/ /index.html;

    }
}

我在 ubuntu 18 上使用 LEMP。

标签: reactjsnginxserverdigital-ocean

解决方案


你可以试试这个配置吗?

server {
    listen 80;
    listen [::]:80;

    # Add index.php to the list if you are using PHP
    index index.html index.htm index.nginx-debian.html;

    server_name mydomain.org www.mydomain.org;
    root /var/www/mydomain.org/html/frontend/site;

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

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

推荐阅读