2013-03-12 7 views
18

'da doğru proxy yolu var A ve B olmak üzere iki sunucu var. Sunucu A, dünya çapında erişilebilir. Nginx'in yüklü. Ben conf yanı da bu:nginx.conf

yapması gerekenler
location /test { 
    proxy_pass http://localserver.com; 
} 

, iç sunucu adresi http://localserver.com için addreess http://globalserver.com/test (bu sunucu A) çevirmek olduğunu. Ancak, konum yolunu ekler, yani, http://localserver.com/test'u arayabilir, ki bu da mevcut değildir. Proxy'yi doğru adrese nasıl geçirebilirim, buradaki son bölümü atarım? Burada http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass belirtilen

cevap

30

Bu işe yaramalı. Nginx, yukarı/aşağı yerel sunucudaki '/ test' yolunu açmalıdır. Yani söyleyebileceğim şey bunun sebebi değil. Biraz daha iyi hale getirmek için, bu deneyin:

location /test/ { 
    proxy_pass http://localserver.com/; 
} 

2 Yanlışlıkla maçı '/ TEST' önlemek ve örneğin memba yerel sunucuya yanlış isteği gönderir ilk 2 hat eklenmiştir kesiyor.

aynı konum bloğunda bir

proxy_redirect 

hattı var mı? Eğer yukarı yönde yerel sunucunuz yeniden yönlendiriyorsa, o sırada bir hata açıkladığınız gibi bir soruna neden olacaktır.

[GÜNCELLEME] orijinal yapılandırma işe yaramadı ve mayın çalışır neden kök neden Bulunan: proxy_pass yönergesi bir URI yolu kendisi yoksa nginx URL yolu parçayı değiştirin DEĞİLDİR. Sonuç olarak, eğik çizgi ekleme (eğik çizgi URI yolu olarak kabul edilir) sonunda URI yolu değiştirmeyi tetikler.

Referans: o zaman proxy_pass URI parçası olmadan kullanılması gerektiğini direktifi işlenmemiş formda URI iletmek için gerekirse ben de eklerseniz http://wiki.nginx.org/HttpProxyModule#proxy_pass

location /some/path/ { 
    proxy_pass http://127.0.0.1; 
} 
+0

Eh işte çözüm URI'imin sonundaki ters eğik çizgi (kök yolu) proxy_pass http: // 127.0.0.1/'nginx sonunda gelen yolu ekleyemez mi? –

1

eklemeyi deneyin:

 proxy_pass http://localserver.com/; 
İlgili konular