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:
- https://github.com/nodejitsu/node-http-proxy/issues/341
- http://mattrobenolt.com/handle-x-forwarded-port-header-in-django/
Einige verwandte Links:
Jemand behauptet, die Definition von Http-Host:
http://ask.wireshark.org/questions/22988/http-host-header-with-and-without-port-numberJemand sagen, es für diesen Header keine Standards ist:
What is a full specification of X-Forwarded-Proto HTTP header?Ein unbeantworteter, verwandte Stack-Überlauf:
https://serverfault.com/questions/536576/nginx-how-do-i-forward-a-http-request-to-another-port