2014-04-22 7 views
7

Ich bin ein Anfänger bei Nginx. Ich habe einen einfachen Webserver auf 8080, dem ich den gesamten Verkehr in dieser ziemlich kleinen Umgebung übergeben möchte. Mein Proxy scheint zu funktionieren, außer dass ein benutzerdefinierter Header nicht vorhanden ist, wenn er meinen Upstream-Server erreicht. Der Serverblock ist unten. Was müsste ich hinzufügen, um meinen benutzerdefinierten Header beizubehalten? In diesem Fall wurde der benutzerdefinierte Header in angularjs gesetzt, aber ich denke nicht, dass das etwas damit zu tun hat, da es problemlos funktioniert und direkt auf 8080 auf dem Server läuft. ($ HttpProvider.defaults.headers.common [ 'GH_client'] = client_id();)einfache nginx Reverse-Proxy scheint einige Header zu entfernen

server { 
server_name localhost; 

location/{ 
     proxy_pass  http://localhost:8080; 
     proxy_redirect off; 
    proxy_pass_header X-CSRF-TOKEN; 
     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-NginX-Proxy true; 
}} 

Vielen Dank für jede Hilfe.

Antwort

10

Ihre Kopfzeile enthält Unterstrich (_). Standardmäßig werden die Kopfzeilen von nginx mit Unterstrichen als ungültig markiert und fallengelassen.

Sie sollten underscores_in_headers Richtlinie aktivieren.

Andernfalls ändern Sie den Namen des Headers in einen ohne Unterstriche. GH-client ist perfekt gültig und an Ihren Backend-Server weitergeleitet.

+0

Wenn Sie nginx in einer AWS-Umgebung verwenden, interessiert Sie vielleicht [this thread] (https://forums.aws.amazon.com/thread.jspa?messageID=674114) – BitsEvolved

+0

Vielen Dank. Der Standard-CSRF-Header von MVC .net verwendet standardmäßig Unterstriche. Wir sind heute darauf gestoßen. – BradLaney

Verwandte Themen