Nginx 将根目录设置为子文件夹

Nginx set root to subfolder

使用 Nginx,我需要下载文件夹成为我网站的主页,同时仍然允许 terms.html 页面出现在根目录。下载文件夹显示带有 fancyindex 和 fancyindex_header 指令的文件列表。

我这样做了:root /var/www/html/download; 但我无法再访问下载文件夹之外的页面,例如 terms.html

nginx 是否允许这种配置?这是我的目录结构:

www/
    /download/  # fancyindex on + home page
    /account/
            /index.php
            /login.php
            /signup.php
    /css/
    /js/
    robots.txt
    terms.html

如果您的目录结构遵循您的 URI 结构,您可能应该在 server 级别将 root 设置为 /var/www/html,并使用 /var/www/html/download 作为一个 location 仅。

例如:

server {
    ...
    root /var/www/html;

    location / {
        root /var/www/html/download;
        fancyindex on;
    }
    location /account/ {
        ... # PHP stuff
    }
    location /css/ { }
    location /js/ { }
    location = /robots.txt { }
    location = /terms.html { }

最后四个块可以为空,因为它们从周围的块继承了 root 的值。有关详细信息,请参阅 this document