2014-04-22 9 views
7

Sono un principiante in nginx. Ho un semplice webserver su 8080 che voglio passare tutto il traffico in questo ambiente piuttosto piccolo. Il mio proxy sembra funzionare tranne che un'intestazione personalizzata non è presente quando arriva al mio server upstream. Il blocco del server è sotto. Cosa avrei bisogno di aggiungere a questo per mantenere la mia intestazione personalizzata? In questo caso l'intestazione personalizzata è stata impostata in angularjs ma non penso che abbia nulla a che fare con esso poiché funziona correttamente andando direttamente a 8080 sul server. ($ HttpProvider.defaults.headers.common [ 'GH_client'] = client_id();)semplice proxy inverso di nginx sembra strisciare alcune intestazioni

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

Grazie per qualsiasi aiuto.

risposta

10

L'intestazione contiene trattino basso (_). Di default nginx minaccia le intestazioni con underscore come non valide e le rilascia.

È necessario abilitare la direttiva underscores_in_headers.

Altrimenti, prendere in considerazione il nome dell'intestazione di modifica in uno senza trattini bassi. GH-client sarà perfettamente valido e inoltrato al tuo server di back-end.

+0

Se si utilizza nginx in un ambiente AWS, potrebbe essere interessato a [questo thread] (https://forums.aws.amazon.com/thread.jspa?messageID=674114) – BitsEvolved

+0

Grazie. L'intestazione CSRF predefinita di MVC .net assume come valori di sottolineatura. Ci siamo imbattuti in questo oggi. – BradLaney