使用proxy_pass时,NGINX不会转发标头值

我有以下设置并configuration为发送所有/ api请求到不同的服务器:

location /api { proxy_pass https://myapp.herokuapp.com; rewrite ^/api/(.*) /$1 break; } 

我的应用程序发送一个头(USER_CUSTOMER),当它直接与myapp.herokuapp.com进行通信时,它的工作,但是通过代理服务器请求时,API值上显示NULL。

下面在NGINX中有效,但是我需要App能够设置USER_CUSTOMER的值。

 location /api { proxy_pass https://app.herokuapp.com; proxy_set_header USER_CUSTOMER ABC; rewrite ^/api/(.*) /$1 break; } 

我可能会在将来发送额外的头文件,所以我希望有一个标志将所有头文件从代理传递到API服务器。

 Ubuntu nginx/1.1.19 

标题属性USER_CUSTOMER是无效的语法。 下划线在标题属性中是无效的。

有一个解决方法,但最好的解决scheme是重写属性为有效的语法。

解决方法是在config中指定服务器名称的地方设置以下内容:

 underscores_in_headers on; 

我想你正在寻找proxy_pass_request_headers选项。 将其设置为:

 location /api { proxy_pass_request_headers on; proxy_pass https://app.herokuapp.com; proxy_set_header USER_CUSTOMER ABC; rewrite ^/api/(.*) /$1 break; }