适用于多个项目和位置的 Nginx Conf

适用于多个项目和位置的 Nginx Conf

所以我有 2 个项目(用 Angular 制作),用于前端和管理。

我想location / {}为前端文件夹提供服务,并location /admin {}为管理文件夹提供服务。

另请注意,我不想在管理项目中添加基本 href,例如--base-href=/admin/

所以我到现在所拥有的是:

location {
    root /home/ubuntu/front/dist;
    index index.html;
    try_files $uri$args $uri$args/ /index.html;
}

location /admin {
    rewrite ^/admin/(.*) /$1 break;
    root /home/ubuntu/admin/dist;
    index index.html;
    try_files $uri$args $uri$args/ =404;
}

所以我对此有两个问题:

  1. /admin 与正则表达式不匹配,但 /admin/ 匹配。
  2. Nginx 正在尝试在文件夹 dist/admin 中查找文件,因此我得到 404 页面。

我尝试在各处添加/删除结束斜杠,大多数情况下,我只是从 /admin 重定向到 / 并获得前端应用程序的服务。

我想我需要修复重写规则,并且以某种方式忽略每条路线的起始“/admin”,因为管理项目没有该前缀。

答案1

尝试这样做以避免将第二个位置重写为第一个位置,同时也避免使用alias而不是附加请求网址root

location / {
    root /home/ubuntu/front/dist;
    index index.html;
    try_files $uri$args $uri$args/ /index.html;
}

location /admin {
    alias /home/ubuntu/admin/dist;
    index index.html;
    try_files $uri$args $uri$args/ =404;
}

相关内容