2012-04-16 16 views
10

Mam nginx skonfigurowany do pośrednictwa ruchu HTTPS do serwera http uruchomionego na tym samym komputerze.Nginx proxy https do http na niestandardowym porcie?

Wszystko działa poprawnie, gdy skonfiguruję nginx do nasłuchu/proxy z portu https 443. Ale naprawdę chcę słuchać na niestandardowym porcie. Kiedy konfiguruję niestandardowy port, nginx odbiera żądanie i wysyła je do mojego serwera http, tak jak powinien, ale serwer odpowiada przekierowaniem HTTP z powrotem do przeglądarki, która nakazuje mu przekierowanie na serwer https: //. com/someurl ". Mam na myśli, że adres URL przekierowania wygląda dobrze, z wyjątkiem braku prawidłowego portu. Czy brakuje nagłówka HTTP, który muszę ustawić w proxy?

W szczególności używam instancji http ścieżek .; http://getontracks.org Jeżeli sprawy

Moja konfiguracja serwera nginx (pracuje na standardowym porcie):

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

Odpowiedz

1

Th. jest bardziej kwestią aplikacji działającej na hostach upstream (Tracks), a nie konfiguracji serwera WWW (chyba że twoja konfiguracja serwera WWW zawiera oczywiście reguły przepisywania). Różne aplikacje obsługują te sytuacje w różny sposób: niektóre wymagają jawnego parametru konfiguracyjnego, informującego o rzeczywistym adresie URL, do którego można uzyskać dostęp, niektóre korzystają z niektórych nagłówków HTTP, inne korzystają z innych nagłówków HTTP.

Ponieważ utwory to aplikacja Rails, możesz uzyskać bardziej kompetentne odpowiedzi, jeśli dodasz odpowiedni tag do swojego pytania.

+0

Dzięki. Znalazłem kilka postów na forum sugerujących ustawienie nagłówka HTTP-Forwarded-Port, chociaż wydaje się, że jest to jeszcze bardziej niestandardowy nagłówek "niestandardowy". Próbowałem ustawić to w konfiguracji nginx bez powodzenia. Przypuszczam, że w każdym razie, jak mówisz, aplikacja działająca na hoście upstream musi być świadoma i podjąć działania w tym kierunku. – kenen

24

Problem wynika z wiersza -

proxy_set_header Host $host; 

Serwer WWW (WEBrick) z kolei jest w tym to wydając odpowiedź przekierowania.

Można go zmienić włączenie niestandardowego portu -

proxy_set_header Host $host:$server_port; 

które powinny rozwiązać ten problem.

+0

Bardzo dobrze. Rozwiązało to mój problem z aplikacją kolby działającą za odwrotnym proxy nginx, próbując wygenerować odpowiedni URL. port niebędący portem starndard, jak opisano w [flask snippet 35] (http://flask.pocoo.org/snippets/35/) bez konieczności dotykania tego fragmentu. –

Powiązane problemy