【问题标题】:Forward request headers from nginx proxy server从 nginx 代理服务器转发请求标头
【发布时间】:2013-11-14 02:28:24
【问题描述】:

我使用 Nginx 作为代理来过滤对我的应用程序的请求。在“http_geoip_module”的帮助下,我正在创建一个国家代码 http-header,我想使用“headers-more-nginx-module”将它作为请求标头传递。这是 Nginx 配置中的 location 块:

location / {
    proxy_pass                      http://mysite.com;
    proxy_set_header                Host http://mysite.com;;
    proxy_pass_request_headers      on;
    more_set_headers 'HTTP_Country-Code: $geoip_country_code';
}

但这只会在响应中设置标题。我尝试使用“more_set_input_headers”而不是“more_set_headers”,但是标题甚至没有传递给响应。

我在这里错过了什么?

【问题讨论】:

  • 同时检查你是否在 docker swarm 集群内的 docker 容器上运行 nginx,如果是,那么你必须关注this steps

标签: nginx proxy http-headers


【解决方案1】:

如果要将变量传递给代理后端,则必须使用代理模块进行设置。

location / {
    proxy_pass                      http://example.com;
    proxy_set_header                Host example.com;
    proxy_set_header                HTTP_Country-Code $geoip_country_code;
    proxy_pass_request_headers      on;
}

现在它被传递到代理后端。

【讨论】:

  • 我正要回信告诉你它不起作用,因为我已经尝试过了,但显然它起作用了。我没有正确查看请求,但是在使用 tcpdump 之后,我看到标头一直通过...谢谢!
  • 如果在客户端设置。我只希望传递该值。我不知道我的 nginx 设置中的值是什么,所以我无法重置它。我想要的是让客户端创建的任何自定义标头不变地传递到反向代理服务器。当然有办法做到这一点。
  • 还要确保在服务器块中使用underscores_in_headers on;,否则 nginx 不会转发这些标头!参考:serverfault.com/a/586997/317502
  • 这是传递Host 标头的正确方法吗?主机标头不应包含http://。除非 nginx 做了一些魔术来消除它,否则我会说相关的 proxy_set_header 语句是错误的。
  • @Fleshgrinder 也可以与 301/302 重定向一起使用吗?
【解决方案2】:

问题是'_'下划线在标题属性中无效。如果删除下划线不是一个选项,您可以添加到服务器块:

underscores_in_headers on;

这基本上是@kishorer747 对@Fleshgrinder 答案的评论的复制和粘贴,解决方案来自:https://serverfault.com/questions/586970/nginx-is-not-forwarding-a-header-value-when-using-proxy-pass/586997#586997

我在这里添加了它,因为在我的情况下,nginx 背后的应用程序运行得非常好,但是一旦 ngix 在我的烧瓶应用程序和客户端之间,我的烧瓶应用程序就不会再看到标题了。调试有点费时。

【讨论】:

  • 这正是我在使用 nginx 时遇到的问题,我的搜索也将我带到了这里。接受的答案没有任何区别。
  • 就我而言,nginx 忽略了带有underscore(_) 的标头,这个答案解决了我的问题!
【解决方案3】:

您可以通过添加以下内容来传递所有标题:

ignore_invalid_headers off;

但请考虑这样做的安全问题。

【讨论】:

    猜你喜欢
    • 2015-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-21
    • 1970-01-01
    • 2020-05-03
    • 2021-06-23
    • 2022-01-20
    相关资源
    最近更新 更多