2014-01-17 1 views
6

Also, ich habe eine Nginx Reverse Proxying zu einem Rails-Server. Der Rails-Server verfügt über eine oauth-Anmeldung und die erstellte lib erstellt die Rückruf-URL mit "X-Forwarded-Host". Das Problem ist, dass, wenn nginx auf einem anderen Port als 80 horcht, die Callback-URL nicht richtig formatiert ist. Wenn ich mir die Konfiguration anschaue, habe ich festgestellt, dass die URL von 'X-Forwarded-Host' stammt und die verwendete Konfiguration den Port nicht enthält. Ich habe meine Konfiguration in die folgenden geändert, um diese Arbeit zu machen:Wie sollten Sie den Wert des HTTP-Ports beim Proxy weiterleiten?

server { 
    listen 8081; 
    server_name app; 

    location/{ 
    proxy_pass http://app; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-Host $host:8081; 
    proxy_set_header X-Forwarded-Server $host; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_redirect off; 
    } 
} 

Meine Frage ist, was ist ‚X-Forwarded-Host‘ tatsächlich definiert als? Nginx behandelt "Http-Host" als den Host + Port, aber ich habe im Netz gefunden, dass manchmal X-Forwarded-Host nur als Host behandelt wird, und es scheint eine Variable namens "X-Forwarded-Port" zu geben Das wird manchmal verwendet, aber ich konnte in den nginx-Dokumenten nichts darüber finden, außer dass eine Variable in den Protokollen "Proxy-Port" zum Ausdrucken verfügbar ist, aber das ist der Port, an den weitergeleitet wird, und nicht der Port nahm die Verbindung an (was für mich nichts ist, weil ich einen Unix-Socket nutze). Was ist die richtige Lösung? Nginx erlaubt mir nicht manuell einen X-Forwarded-Port-Header, und ich bin mir nicht einmal sicher, ob ich das tun sollte. Suchen Sie rund um das Netz, scheint es, dass andere http-Server diese behandeln variabel anders, zum Beispiel:

Einige verwandte Links:

Antwort

-2

Der Server "app" hat nginx auf Port 8081 und Schienen auf 80.

Dies ordnet alle Anfragen zu http://app:80 zu und ändert die Antwort -header "Standort" von http://app:80 bis http://app:8081.

server { 
    listen 8081; 
    server_name app; 

    location/{ 
     proxy_pass http://app:80; 
     proxy_redirect http://app/ http://app:8081/; 
     proxy_redirect http://app:80/ http://app:8081/; 
    } 
} 
Verwandte Themen