2013-11-03 31 views
34

Sto utilizzando Nginx come proxy per filtrare le richieste alla mia applicazione. Con l'aiuto di "http_geoip_module" sto creando un http-header di codice paese, e voglio passarlo come header di richiesta usando "headers-more-nginx-module". Questo è il blocco posizione nella configurazione Nginx:Inoltra intestazioni richiesta dal server proxy nginx

location/{ 
    proxy_pass      http://mysite.com; 
    proxy_set_header    Host http://mysite.com;; 
    proxy_pass_request_headers  on; 
    more_set_headers 'HTTP_Country-Code: $geoip_country_code'; 
} 

Ma questo imposta solo l'intestazione nella risposta. Ho provato a utilizzare "more_set_input_headers" invece di "more_set_headers" ma l'intestazione non è nemmeno passata alla risposta.

Cosa mi manca qui?

+0

Ehi Pelig. È consuetudine dare una risposta un upvote quando alcuni ti forniscono una risposta utile. È anche opportuno alzare una domanda se trovi che ti atterri qui mentre cerchi una risposta. Questo perché il sito è basato sulla reputazione. Ho upvoted la tua domanda e risposta leshgrinder perché stavo cercando la stessa risposta. – jww

risposta

62

Se si desidera passare la variabile al proprio back-end proxy, è necessario impostarla con il modulo proxy.

location/{ 
    proxy_pass      http://example.com; 
    proxy_set_header    Host example.com; 
    proxy_set_header    HTTP_Country-Code $geoip_country_code; 
    proxy_pass_request_headers  on; 
} 

E ora è passato al proxy backend.

+4

Stavo per scriverti che non funziona perché l'ho già provato, ma a quanto pare lo fa. Non stavo visualizzando la richiesta correttamente, ma dopo aver usato [tcpdump] (http://www.tcpdump.org) vedo che l'intestazione è stata passata tutto questo tempo ... Grazie! – Peleg

+1

Se è impostato nel client. Voglio solo che quel valore sia tramandato. Non ho idea di quale sia il valore nella mia configurazione di nginx, quindi non posso resettarlo. Quello che voglio è che tutte le intestazioni personalizzate create dal client passino al server reverse-proxy invariato. Sicuramente c'è un modo per farlo. –

+15

assicurati anche di usare '' 'underscores_in_headers on;' '' nel tuo blocco server, altrimenti nginx non sta inoltrando quelle intestazioni! ref: http://serverfault.com/a/586997/317502 – kishorer747

Problemi correlati