![适用于多个项目和位置的 Nginx Conf](https://linux22.com/image/764191/%E9%80%82%E7%94%A8%E4%BA%8E%E5%A4%9A%E4%B8%AA%E9%A1%B9%E7%9B%AE%E5%92%8C%E4%BD%8D%E7%BD%AE%E7%9A%84%20Nginx%20Conf.png)
所以我有 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;
}
所以我对此有两个问题:
- /admin 与正则表达式不匹配,但 /admin/ 匹配。
- 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;
}