Nginx çoklu kökler


13

İstekleri belirli bir alt dizine, başka bir kök konuma aktarmak istiyorum. Nasıl? Mevcut bloğum:

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

Yani, http://www.domain.com /home/me/Documents/site1/index.html, http://www.domain.com/petproject / home / me / pet-Project / website /index.html - nginx, değiştirme işleminden sonra tüm kuralları yeniden çalıştırıyor gibi görünüyor ve http://www.domain.com/petproject yalnızca /home/me/Documents/site1/index.html adresine hizmet veriyor.

Yanıtlar:


28

Konfigürasyon, genellikle nginx ile meydana gelen olağan bir soruna sahiptir. Yani, blok rootiçinde yönerge kullanmak location.

Mevcut locationbloklarınız yerine bu yapılandırmayı kullanmayı deneyin :

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

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

Bu, web siteniz için varsayılan dizinin /home/me/Documents/site1ve /petprojectURI için içeriğin dizinden sunulduğu anlamına gelir /home/me/pet-Project/website.


4

Yeniden breakyazma kuralına eklenen bayrağa ihtiyacınız vardır , böylece işlem durur ve bu bir konum bloğu içerisindeyken işlem bu blok içinde devam eder:

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

Not Ayrıca /?, URL'nin başında çift eğik çizgi ile karşılaşmamanız için eşleşen desene de ekledim .


Burada aliaskullanılması gerektiği gibi direktif kullanıldığında burada yeniden yazmaya gerek yoktur .
Tero Kilkanen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.