1

我的NodeJS和nginx的運行我發送一個額外的標頭中的API「API_KEY」中及其在的NodeJS req.headersreq.get('api_key')沒有接收我有波紋管配置文件nginx的自定義首部中的NodeJS未接收而使用nginx的反向代理

server { 
    listen 80; 
    listen [::]:80 default_server ipv6only=on; 
    server_name mysite.com; 
    return 301 https://$host$request_uri; 
location/{ 
    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; 
    proxy_pass http://localhost:9102/; 
    proxy_set_header Host $http_host; 
    proxy_set_header api_key $http_api_key; 
    #proxy_set_header api_key 'Some Value'; works 
    proxy_redirect off; 
    } 
} 

如果設置的proxy_set_header api_key 'some value'它的作品的價值和頭印在控制檯但api_key進行改變,這就是爲什麼我使用$http_api_key這樣無論進來api_key自定義標題,因爲它是從其他客戶端發送接收。我曾嘗試過幾種解決方案,如proxy_set_header api_key $upstream_http_api_key;,但沒有幫助。我想要接收從nodejs中的其餘客戶端發送的任何自定義頭。

+1

添加'proxy_pass_header api_key;'而不是自己設置。看看是否有幫助 –

回答

1

默認情況下,nginx不傳遞包含下劃線的標頭。

嘗試:

underscores_in_headers on; 

詳見this document

或者,使用API-KEYX-API-KEY而不是API_KEY