首页 > 解决方案 > 设置默认 nginx 位置

问题描述

我正在构建一个位于 nginx 后面的 MEAN 堆栈应用程序

我的应用程序的角度方面都是通用的,并且会根据用户访问的 URL 做出不同的反应,即如果用户访问 my.app/cars,它将访问不同的网页,而不是用户访问 my.app/自行车

在我的应用程序的 Angular 方面是通用的之前,我的 nginx 开发文件的所有 URL 都是硬编码的

server {
    listen 80;
    location /cars {
        ...
    }

    ....
}

但是,既然角度部分是通用的,我希望我的 nginx 默认将所有请求设置为角度。

我一直在网上四处寻找,似乎有

location / {
    ....
}

应该实现这一点,但是,当我这样做时,我收到“无法访问此站点”错误。

关于如何实现我在默认情况下将 nginx 设置为 angular 的错误的任何建议?

我假设人们在遇到“找不到页面”错误时会这样做,但我还是找不到任何东西。

谢谢

标签: nginx

解决方案


简单的:

location / {
    root /your/app/directory;
    index index.html;
    try_files $uri $uri/ /index.html;
}

如果找不到文件,您只需要告诉 nginx 该怎么做。
try_files将为您解决这个问题。

如果你要求example.com/foo/bar/123

然后它将尝试以下操作:

  1. $uri>/your/app/directory/foo/bar/123
  2. $uri/> /your/app/directory/foo/bar/123/index.html(这是来自index指令)
  3. /index.html>/your/app/directory/index.html

PS:

如果您指定try_files $uri $uri/ /;

那么最后一条规则将考虑索引指令。类似于第二条指令。


推荐阅读