2012-04-16 20 views
10

Nginx, aynı makinede çalışan bir http sunucusuna https trafiğini proxy olarak yapılandırdı.Nginx proxy https standart dışı portta http?

Nginx'i https bağlantı noktası 443'ten/proxy'de dinleyecek şekilde yapılandırdığımda her şey iyi çalışıyor. Ancak standart olmayan bir bağlantı noktasını gerçekten dinlemek istiyorum. Standart olmayan bir bağlantı noktasını yapılandırdığımda, nginx isteği alır ve gerektiği gibi http sunucusuna gönderir, ancak sunucu bir HTTP yönlendirmesiyle 'https: // sunucusuna yeniden yönlendirmeyi söyleyen tarayıcıya yanıt verir. com/someurl ". Yönlendirme URL'si doğru bağlantı noktasını kaçırmadığı için iyi görünüyor. Proxy'de ayarlamam gereken bir HTTP üstbilgisini eksik miyim?

Özellikle bir http örneği Tracks çalıştırıyorum .; http://getontracks.org bu konularda

Benim (standart bağlantı noktası üzerinde çalışma) nginx sunucu yapılandırması:

location /{ 
    proxy_pass http://localhost:50000; 
    proxy_next_upstream error timeout invalid_header http_500 http_502 http_503; 
    proxy_set_header Host $host; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header X-Forwarded-Proto https; 
    proxy_redirect off; 
} 

cevap

1

Th. web sunucusu konfigürasyonunun değil, upstream ana bilgisayarında (Tracks) çalışan uygulamanın daha fazla bir sorundur (akış yönündeki web sunucu yapılandırmanızın yeniden yazma kuralları içermediği sürece). Farklı uygulamalar bu durumları farklı şekilde ele alır: bazıları, uygulamaya erişilebilecek gerçek URL'yi açıklayan bir açık yapılandırma parametresine ihtiyaç duyar, bazıları belirli HTTP başlıklarını kullanır, bazıları diğer HTTP başlıklarını kullanır.

Tracks bir Rails uygulaması olarak, sorunuza karşılık gelen bir etiketi eklerseniz daha bilgili yanıtlar alabilirsiniz.

+0

Teşekkürler. Standart olmayan bir 'standart olmayan' üstbilgiye benzese bile, bir HTTP X-Yönlendirilmiş Bağlantı Noktası başlığının ayarlanmasını öneren bazı forum gönderileri buldum. Şanssız olarak nginx yapılandırmasında bunu ayarlamayı denedim. Yine de, sizin de söylediğiniz gibi, yukarı akışlı ana bilgisayarda çalışan uygulamanın bu gibi bir şey hakkında farkında olması ve harekete geçmesi gerekiyor. – kenen

24

konu satırında kaynaklanıyor - yönlendirme yanıtı verirken sırayla Web sunucusu (WEBrick) Bu dahildir

proxy_set_header Host $host; 

.

Sen Standart olmayan bağlantı noktasını kapsayacak şekilde değiştirebilirsiniz - bu çözmelidir

proxy_set_header Host $host:$server_port; 

.

+0

Çok iyi. Bu, uygun url dahil olmak üzere nginx ters proxy arkasında çalışan flask uygulaması ile benim sorunum çözüldü. [plask snippet 35] 'da (http://flask.pocoo.org/snippets/35/) açıklandığı gibi starndard olmayan bağlantı noktası bu snippet'e dokunmaya gerek duymadan. –