Nginx múltiples raíces


13

Me gustaría desviar las solicitudes a un subdirectorio particular, a otra ubicación raíz. ¿Cómo? Mi bloque existente es:

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;
    } }

Es decir, http://www.domain.com debería servir /home/me/Documents/site1/index.html mientras que http://www.domain.com/petproject debería servir / home / me / pet-Project / website /index.html: parece que nginx vuelve a ejecutar todas las reglas después del reemplazo, y http://www.domain.com/petproject solo sirve /home/me/Documents/site1/index.html.

Respuestas:


27

La configuración tiene el problema habitual que generalmente ocurre con nginx. Es decir, usando la rootdirectiva dentro del locationbloque.

Intente usar esta configuración en lugar de sus locationbloques actuales :

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

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

Esto significa que el directorio predeterminado para su sitio web es /home/me/Documents/site1, y para /petprojectURI, el contenido se sirve desde el /home/me/pet-Project/websitedirectorio.


4

Necesita breakque se agregue el indicador a la regla de reescritura, de modo que el procesamiento se detenga, y como esto está dentro de un bloque de ubicación, el procesamiento continuará dentro de ese bloque:

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

Tenga en cuenta que también agregué /?el patrón de coincidencia para que no termine con barras diagonales dobles al comienzo de la url.


La reescritura no es necesaria aquí cuando aliasse usa la directiva como debería usarse aquí.
Tero Kilkanen
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.