Nginx banyak akar


13

Saya ingin mengalihkan permintaan ke sub-direktori tertentu, ke lokasi root lain. Bagaimana? Blok saya yang ada adalah:

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

Yaitu, http://www.domain.com harus melayani /home/me/Documents/site1/index.html sedangkan http://www.domain.com/petproject harus melayani / home / me / pet-Project / website /index.html - tampaknya nginx menjalankan kembali semua aturan setelah penggantian, dan http://www.domain.com/petproject hanya melayani /home/me/Documents/site1/index.html.

Jawaban:


27

Konfigurasi memiliki masalah yang biasa terjadi pada nginx. Yaitu, menggunakan rootdirektif di dalam locationblok.

Coba gunakan konfigurasi ini alih-alih locationblok Anda saat ini :

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

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

Ini berarti direktori default untuk situs web Anda adalah /home/me/Documents/site1, dan untuk /petprojectURI, konten disajikan dari /home/me/pet-Project/websitedirektori.


4

Anda memerlukan breakbendera yang ditambahkan ke aturan penulisan ulang, sehingga pemrosesan berhenti, dan karena ini ada di dalam blok lokasi, pengolahan akan berlanjut di dalam blok itu:

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

Catatan saya juga menambahkan /?pola yang cocok sehingga Anda tidak berakhir dengan garis miring ganda di awal url.


Menulis ulang tidak diperlukan di sini sama sekali ketika aliasarahan digunakan seperti itu harus digunakan di sini.
Tero Kilkanen
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.