我是nginx的初学者。我在8080上有一个简单的网络服务器,我希望在这个相当小的环境中传递所有流量。我的代理似乎工作,除了当它到达我的上游服务器时没有自定义标头。服务器块在下面。我需要添加什么来保留我的自定义标题?在这种情况下,自定义标头是在angularjs中设置的,但我不认为它与它有任何关系,因为它可以很好地直接到服务器上的8080。 ($ httpProvider.defaults.headers.common ['GH_client'] = client_id();)
server {
server_name localhost;
location / {
proxy_pass http://localhost:8080;
proxy_redirect off;
proxy_pass_header X-CSRF-TOKEN;
proxy_set_header Host $host;
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;
}}
感谢您的帮助。
答案 0 :(得分:12)
您的标题包含下划线(_
)。默认情况下,nginx威胁标题,下划线为无效并删除它们。
您应该启用underscores_in_headers
指令。
否则,请考虑将标题名称更改为不带下划线的标题。 GH-client
将完全有效并代理到您的后端服务器。