5

我有 nodejs 和 nginx 正在运行我在 API 'api_key' 中发送一个额外的标头,它没有在 nodejsreq.headersreq.get('api_key')收到我有下面的 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 中的 rest 客户端发送的任何自定义标头。

4

1 回答 1

10

默认情况下,nginx不传递包含下划线的标题。

尝试:

underscores_in_headers on;

有关详细信息,请参阅此文档

或者,使用API-KEYorX-API-KEY代替API_KEY.

于 2017-09-25T08:36:20.687 回答