30

我在 nginx 中设置此别名以正确显示我的网站时遇到了很多麻烦。

我关心的网站应该可以从mywebsite.com/mr位于mywebsite.com/. 该网站位于/fullpath(为简单起见缩写)该网站需要提供三种内容:

  1. 索引文件位于/fullpath/index.html.
  2. 其他 html 文件(未.html在浏览器中显示扩展名)。
  3. 位于/fullpath和子目录中的静态资产 (js/css/img)。

我试过改变比赛的顺序,try_files发现他们都工作的情况,只是不是同时:

location /mr {
  default_type "text/html";
  alias /fullpath;

  # with this one 1 and 3 work
  # try_files $uri/index.html $uri.html $uri; 

  # with this one 2 and 3 work
  # try_files $uri $uri.html $uri/index.html;

  # with this one 1 and 2 work
  try_files $uri.html $uri/index.html $uri;
}

当一个不起作用时,它是 404 的。有人知道我如何正确地提供各种文件吗?

4

2 回答 2

46

显然 alias 和 try_files不能一起工作。但是,我认为您不需要使用别名。

location /mr {
  default_type "text/html";
  try_files  /fullpath/$uri /fullpath/$uri.html /fullpath/$uri/index.html  /fullpath/index.html;
}

哪个会尝试:

  • 确切的文件。
  • 添加了 .html 的文件。
  • 路径中的索引。
  • 默认索引。

我认为根指令确实适用于尝试文件,但无法测试。

server{
    location /mr {

        root /home/mysite/fullpath;

        default_type "text/html";
        try_files  $uri $uri.html $uri/index.html index.html;
    }
}
于 2013-03-17T01:34:35.683 回答
13

我使用了@Danack 发布的内容的组合,这使我得到了我正在寻找的结果(直接提供 html 文件):

location /health-check {
    default_type "text/html";
    alias /path/to/my/file.html;
}
于 2015-05-11T15:04:19.587 回答