Nginx'in proxy'ye özgü alt dizinleri tersine çevirmesi nasıl önlenir


12

Apache'de bir veya daha fazla alt dizin ("!" İle) dışında her şeyi ProxyPass yapabilirsiniz.

    ProxyPass /subdir !
    ProxyPass / http://localhost:9999/

Nginx eşdeğeri nedir?

İlk tahminim işe yaramıyor:

 location /subdir {
      root /var/www/site/subdir;
  }

 location / {
      proxy_pass http://localhost:9999/ ;
  }

Yanıtlar:


12

Proxy_pass öğesini istediğiniz gibi TAM OLARAK bağlayabilirsiniz,

location = / {
    proxy_pass http://localhost:9999/;
}

Bu, başka bir yolun geçilmemesini sağlar, ancak /

VEYA

bu sözdizimini yalnızca eşleştirilecek alt dizinler için kullanabilirsiniz

location ^~ /subdir {
     alias /var/www/site/subdir;
}

location / {
    proxy_pass http://localhost:9999/ ;
}

Alt ^~diziyle eşleşir ve ardından arama durdurulur, böylece yürütme /gerçekleşmez. Bu tarif edilir burada .


root / var / www / site / alt dizin benim durumumda root / var / www / site olmalıdır, aksi takdirde nginx / var / www / site / subdir / subdir dizinine erişmeye çalışır.
Tinus

Haklısın. Ya bu, ya da aliasyerine kullanabilirsinizroot
Christopher Perrin

1
Bunu ^~daha fazla açıklayabilir misiniz ? Ne yaptığını anlayamadım. Gönderdiğiniz bağlantıyı okumaya çalıştım, ancak yine de alamıyorum. En uzun eşleşen önek konumunda “^ ~” değiştirici varsa, normal ifadeler kontrol edilmez.
Mohammed Noureldin

@MohammedNoureldin, aslında bir yol üzerindeki bir önekle eşleşmeye çalıştığı ve normal ifadeleri değerlendirmediği anlamına gelir.
Christopher Perrin

1
@MohammedNoureldin, konum için kullanmak istediğiniz yolun ilk bölümüdür. Ve evet normal ifade olmadan.
Christopher Perrin
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.