Nginx 多根

Nginx 多根

我想将请求转移到特定子目录,转移到另一个根位置。怎么做?我现有的阻止是:

server {
    listen       80;
    server_name  www.domain.com;

    location / {
        root   /home/me/Documents/site1;
        index  index.html;
    }

    location /petproject {
        root   /home/me/pet-Project/website;
        index  index.html;
        rewrite ^/petproject(.*)$ /$1;
    }

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    } }

那是,http://www.domain.com应提供 /home/me/Documents/site1/index.html 而http://www.domain.com/petproject应该提供 /home/me/pet-Project/website/index.html 服务——似乎 nginx 在替换后重新运行了所有规则,并且http://www.domain.com/petproject仅提供 /home/me/Documents/site1/index.html 。

答案1

配置中存在 nginx 常见的问题,即在块root内使用 using 指令。location

尝试使用此配置代替当前的location块:

root /home/me/Documents/site1;
index index.html;

location /petproject {
    alias /home/me/pet-Project/website;
}

这意味着您的网站的默认目录是/home/me/Documents/site1,并且对于/petprojectURI,内容从/home/me/pet-Project/website目录提供。

答案2

您需要break将标志添加到重写规则中,以便处理停止,并且由于这是在位置块内,因此处理将在该块内继续:

rewrite ^/petproject/?(.*)$ /$1 break;

请注意,我还添加了/?匹配模式,以便您不会在 URL 开头出现双斜杠。

相关内容