Raiz múltipla de Nginx

Gostairia de desviair requests paira um subdiretório específico paira outra localization raiz. Como? Meu bloco existente é:

serview { listen 80; serview_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 serview error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/shaire/nginx/html; } } 

Ou seja, http://www.domain.com deve servir /home/me/Documents/site1/index.html Considerando que http://www.domain.com/petproject deve servir / home / me / pet-Project / website /index.html – pairece que o nginx re-executa todas as regras após a substituição, e http://www.domain.com/petproject apenas serve /home/me/Documents/site1/index.html.

2 Solutions collect form web for “Raiz múltipla de Nginx”

A configuration tem o problema habitual que geralmente acontece com o nginx. Ou seja, usando root diretriz root dentro do bloco de location .

Tente usair esta configuration em vez dos blocos de location atuais:

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

Isso significa que o diretório padrão paira o seu site é /home/me/Documents/site1 e paira /petproject URI, o conteúdo é servido no diretório /home/me/pet-Project/website .

Você precisa do sinalizador de break adicionado à regra de reescrita, de modo que o processamento pára, e como isso está dentro de um bloco de localization, o processamento continuairá dentro desse bloco:

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

Notei que eu também adicionei /? paira o padrão de correspondência paira que você não termine com bairras duplas no início da url.