Nginx più radici


13

Vorrei deviare le richieste verso una particolare sottodirectory, verso un'altra posizione root. Come? Il mio blocco esistente è:

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

Cioè, http://www.domain.com dovrebbe servire /home/me/Documents/site1/index.html mentre http://www.domain.com/petproject dovrebbe servire / home / me / pet-Project / website /index.html - sembra che nginx riesca tutte le regole dopo la sostituzione e http://www.domain.com/petproject serve solo /home/me/Documents/site1/index.html.

Risposte:


27

La configurazione presenta il solito problema che generalmente si verifica con nginx. Cioè, usando la rootdirettiva all'interno del locationblocco.

Prova a usare questa configurazione invece dei tuoi locationblocchi attuali :

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

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

Ciò significa che la directory predefinita per il tuo sito Web è /home/me/Documents/site1e, per /petprojectURI, il contenuto viene offerto dalla /home/me/pet-Project/websitedirectory.


4

È necessario breakaggiungere il flag alla regola di riscrittura, in modo che l'elaborazione si arresti e poiché si trova all'interno di un blocco di posizione l'elaborazione continuerà all'interno di quel blocco:

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

Nota Ho anche aggiunto /?al modello di corrispondenza in modo da non finire con doppie barre all'inizio dell'URL.


La riscrittura non è affatto necessaria qui quando aliassi usa la direttiva come dovrebbe essere usata qui.
Tero Kilkanen,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.