如何为每个位置块手动设置静态html文件

时间:2018-05-04 03:12:25

标签: nginx

我正在尝试使用nginx。我正在尝试为我的配置文件中声明的每个位置提供特定的index.html文件,如

location / {
    root /usr/src/seo/homepage;
}

location ~ /mypage {
    root /usr/src/seo/mypage;
}

location ~ /mypage2 {
    root /usr/src/seo/mypage2;
}

指定的每个文件夹位置都有自己的index.html文件。但是当我尝试访问 mypage mypage2 时,nginx会返回404.我希望它能够呈现它的各个index.html

UPDATE !!! 使用别名解决了它:

location / {
    alias /usr/src/seo/homepage;
}

location ~ /mypage {
    alias /usr/src/seo/mypage;
}

location ~ /mypage2 {
    alias /usr/src/seo/mypage2;
}

1 个答案:

答案 0 :(得分:0)

来自the docs

  

要获取所请求文件的路径,NGINX会将请求URI附加到root指令指定的路径

即。请求/mypage时,nginx会尝试查找/usr/src/seo/mypage/mypage

要解决这个问题,mypagemypage2的位置块应该类似于

location ~ /(mypage|mypage2) {
    root /usr/src/seo;
}

然而,这要求请求以/的斜杠index结束才能工作。因此,包含try_files

可能是个好主意
location ~ /(mypage|mypage2) {
    root /usr/src/seo;
    try_files $uri $uri/ =404;
}