使用 nginx 反向代理时,在 nodejs 中未收到自定义 headers
Custom headers not received in nodejs while using nginx reverse proxy
我有 nodejs 和 nginx 运行 我在 API 'api_key' 中发送了一个额外的 header 但在 req.headers
和 req.get('api_key')
在 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'
的值,它会工作并且 header 会打印在控制台上,但是 api_key
会发生变化,这就是我使用 $http_api_key
的原因所以api_key
自定义 header 中的任何内容都会在从其余客户端发送时收到。我尝试了几个解决方案,例如 proxy_set_header api_key $upstream_http_api_key;
但没有帮助。我想接收从 nodejs 中的其余客户端发送的任何自定义 header。
默认情况下,nginx
不传递包含下划线的 headers。
尝试:
underscores_in_headers on;
有关详细信息,请参阅 this document。
或者,使用 API-KEY
或 X-API-KEY
而不是 API_KEY
。
我有 nodejs 和 nginx 运行 我在 API 'api_key' 中发送了一个额外的 header 但在 req.headers
和 req.get('api_key')
在 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'
的值,它会工作并且 header 会打印在控制台上,但是 api_key
会发生变化,这就是我使用 $http_api_key
的原因所以api_key
自定义 header 中的任何内容都会在从其余客户端发送时收到。我尝试了几个解决方案,例如 proxy_set_header api_key $upstream_http_api_key;
但没有帮助。我想接收从 nodejs 中的其余客户端发送的任何自定义 header。
默认情况下,nginx
不传递包含下划线的 headers。
尝试:
underscores_in_headers on;
有关详细信息,请参阅 this document。
或者,使用 API-KEY
或 X-API-KEY
而不是 API_KEY
。