Nginx

Nginx 多根

  • April 22, 2015

我想將請求轉移到特定的子目錄,轉移到另一個根位置。如何?我現有的塊是:

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 。

配置有通常發生在 nginx 上的常見問題。也就是說,在塊root內使用指令。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目錄提供的。

您需要將break標誌添加到重寫規則中,以便處理停止,並且由於這是在位置塊內,處理將在該塊內繼續:

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

請注意,我還添加/?了匹配模式,這樣您就不會在 url 的開頭出現雙斜杠。

引用自:https://serverfault.com/questions/684523