简单的nginx反向代理似乎会剥离一些标头。

13

我是nginx的初学者。我有一个简单的web服务器在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;
}}

感谢任何帮助。

1个回答

19
您的标题包含下划线(_)。 默认情况下,nginx将带有下划线的标题视为无效并删除它们。
您应该启用underscores_in_headers指令。
否则,请考虑更改标题名称为不带下划线的名称。 GH-client 将是完全有效的,并且被代理到您的后端服务器。

如果您在AWS环境中使用nginx,您可能会对此主题感兴趣。 - Chad
谢谢。MVC .net的默认CSRF标头默认为下划线。今天我们遇到了这个问题。 - BradLaney
谢谢,我也遇到了同样的问题,在本地可以工作,但是在使用ngix进行远程部署时总是失败。 - Nirojan Selvanathan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接