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重新运行replace后的所有规则,而http://www.domain.com/petproject只是提供/home/me/Documents/site1/index.html。

    configuration有通常与nginx发生的问题。 也就是说,在location块内使用root指令。

    尝试使用此configuration,而不是您当前的location块:

     root /home/me/Documents/site1; index index.html; location /petproject { alias /home/me/pet-Project/website; } 

    这意味着您的网站的默认目录是/home/me/Documents/site1 ,对于/petproject URI,内容来自/home/me/pet-Project/website目录。

    你需要在重写规则中添加break标志,以便处理停止,因为这是在一个位置块内,处理将在该块内继续:

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

    注意我也加了/? 到匹配的模式,这样你就不会在URL的开头结束双斜线。