Nginx重定向并从子文件夹提供服务(如果403)

时间:2019-05-05 21:54:29

标签: nginx server web-config webserver

我的网站目录如下,

Sites
    - site 1
        index.html
    - site 2
        - docs
            index.html

我喜欢以这样的方式设置Nginx服务器:如果位置为/site1,则服务器应为index.html;如果位置为site2,则应尝试是否存在任何服务器index.html(如果不是从docs/index.html投放)。我试图以不同的方式来获得它,其中之一是,

server {
    listen       80;
    server_name courses.myserver.com;
    location /site1 {
        root /Sites/site 1;
        index index.html index.htm;
    }
    location /site2 {
        root /Sites/site2;
        try_files $uri $uri/ $uri/docs/;
        index index.html index.htm;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

但是它没有按照我的意愿去做。

1 个答案:

答案 0 :(得分:0)

通过将root的值连接到URI的值来形成文件的路径。您的URI已经包含“ site1”,因此root的值不应包含。有关详细信息,请参见this document

查看目录结构,您可能会对所有位置使用相同的root值,在这种情况下,应将其放在server块中,并允许每个{{1} }继承相同的值。

例如:

location

对于以root /Sites; index index.html index.htm; location /site1 { } location /site2 { ... } 结尾的URI调用index指令。如果要针对/结尾的URI测试index.htmldocs/index.html,可以将特殊情况添加到/指令中。

例如:

index

或者,如果您希望将location /site2 { index index.html index.htm docs/index.html; } 用作与文件或索引不匹配的任何URI的默认值,请将默认URI添加到docs/index.html语句的末尾。有关详细信息,请参见this document

例如:

try_files