`
zhaoshijie
  • 浏览: 2261611 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

nginx反向代理无法获取带下划线的 HTTP Header解决办法

 
阅读更多
关键字:

问题描述:
通过nginx反向代理到tomcat,自定义Header中,其中带下划线的Hdader在tomcat应用中获取不到,类似于n_name/cookie_sig这样的名称;

处理办法:

1:配置中http部分 增加underscores_in_headers on; 配置
2:用减号-替代下划线符号_,避免这种变态问题。nginx默认忽略掉下划线可能有些原因。



原因(有时间的可以了解下根源):


明显是忽略掉了我自定义的header。
差点绝望。还好开源软件可以看源码。
找出个所以然,果然被我找到问题了:
rc = ngx_http_parse_header_line(r, r->header_in, cscf->underscores_in_headers);
if (r->invalid_header && cscf->ignore_invalid_headers)

在ngx_http_parse_header_line() 函数中
if (ch == ‘_’) {
                if (allow_underscores) {
                    hash = ngx_hash(hash, ch);
                    r->lowcase_header[i++] = ch;
                    i &= (NGX_HTTP_LC_HEADER_LEN – 1);

                } else {
                    r->invalid_header = 1;
                }

红色部分就是问题所在了
原来是对header name的字符做了限制,默认 underscores_in_headers 为off,表示如果header name中包含下划线,则忽略掉。恰好我自定义的header中都是用的下划线。
分享到:
评论

相关推荐

    Nginx反向代理不能访问项目的解决办法

    ### Nginx反向代理不能访问项目的解决办法 在配置Nginx作为反向代理服务器时,有时会遇到可以通过域名正常访问Linux系统下部署的Tomcat服务器,但是却无法访问到部署在Tomcat上的具体项目的情况。这种情况通常是...

    Nginx 反向代理解决JS跨域

    通过使用Nginx 反向代理来解决JS跨域问题 http://blog.csdn.net/mzhaocai/article/details/79238338

    nginx反向代理导致session失效的问题解决

    两边通过同一个nginx进行反向代理,nginx配置大致如下, location /health/ { proxy_pass http://192.168.40.159:8081/health/; #无问题的配置 } location /health-dev/ { proxy_pass ...

    Cobalt_Strike_C2隐匿多级nginx反向代理1

    1. 在第一层 Nginx 反向代理节点(例如:21.67.38.47)上配置 Nginx,设置监听 80 端口,并将所有流入的 80 端口流量转发到第二层 Nginx 反向代理的域名(如 host.second.com:80)。 ``` upstream default_pools...

    Nginx反向代理服务器配置基础教程

    ### Nginx反向代理服务器配置基础教程 #### 一、系统架构 在现代Web服务部署中,Nginx作为一款高性能的HTTP和反向代理Web服务器,被广泛应用于负载均衡、反向代理以及静态资源服务等多个场景。本文将详细介绍如何...

    nginx多网站反向代理

    nginx多网站反向代理

    42 2 Nginx反向代理视频

    教程视频:Nginx反向代理web服务器,后台java控制连接访问。

    nginx反向代理配置

    nginx反向代理配置 动静分离不错的代理

    https通信nginx反向代理443端口

    在IT行业中,HTTPS通信是确保网站数据安全传输的重要手段,而Nginx作为一款高性能的HTTP和反向代理服务器,常被用来实现这种安全通信。本文将深入探讨如何通过Nginx配置HTTPS服务器,实现443端口的反向代理,以及与...

    windows下配置nginx反向代理tomcat

    ### Windows 下配置 Nginx 反向代理 Tomcat 在 Windows 环境下配置 Nginx 作为 Tomcat 的反向代理服务器是一项常见的任务,主要用于实现负载均衡、提高安全性及提升性能等目的。本文将从下载 Nginx 开始,详细介绍...

    Nginx作为反向代理时传递客户端IP的设置方法

    因为架构的需要采用多级 Nginx 反向代理,但是后端的程序获取到的客户端 IP 都是前端 Nginx 的 IP,问题的根源在于后端的 Nginx 在 HTTP Header 中取客户端 IP 时没有取对正确的值。 同样适用于前端是 Squid 或者...

    利用Nginx反向代理解决跨域问题详解

    问题 在之前的分享的跨域资源共享的文章中,有提到... 基于与合作方后台的配合,利用nginx方向代理来满足浏览器的同源策略来实现跨域 实现方法 反向代理概念 反向代理(Reverse Proxy)方式是指以代理服务器来接受In

    一分钟搞定 Nginx反向代理 nginx域名代理

    3.找到D:\nginx\conf下nginx.conf文件用记事本打开 在文段末尾大括号前加上 include proxy.conf;(就是加载刚刚新建的那个文件(注意路径)) 4.进入cmd 进入D盘: d: 进到nginx文件夹下:cd nginx 启动nginx.exe:...

    docker 安装 wordpress,通过nginx反向代理,绑定域名,配置https

    我们需要配置 Nginx 反向代理,以便访问 WordPress 站点。我们可以在 nginx.conf 文件中添加以下配置: ``` server { listen 80; server_name ikeguang.com; location / { proxy_pass http://localhost:8080; ...

    Web APP 如何实现类似Nginx反向代理转发功能-zhangyannan1

    Web APP 实现类似 Nginx 反向代理转发功能 Web APP 如何实现类似 Nginx 反向代理转发功能是指在 Web 应用程序中实现反向代理转发的功能,以便将用户的请求转发到其他服务器或应用程序上。反向代理转发是一种常用的...

    Nginx服务器作反向代理实现内部局域网的url转发配置

    然后k兄就提议可以在内网搭建个nginx反向代理服务器,将nginx反向代理服务器的80映射到外网IP的80,这样指向到公司外网IP的域名的HTTP请求就会发送到nginx反向代理服务器,利用nginx反向代理将不同域名的请求转发给...

    nginx正向代理与反向代理详解

    Nginx是一款高性能的HTTP和反向代理服务器,同时也是一款邮件代理服务器。本文将详细介绍Nginx如何实现正向代理和反向代理,以及这两种代理方式的应用场景。 **正向代理** 正向代理的主要作用是让内部网络中的设备...

    nginx反向代理配置文件示例,支持非80端口映射

    网上找到的nginx反向代理配置文件通常只能通过80端口进行访问,映射到其他端口时系统可能获取不到,经过找资料以及试验,找到了能够解决的配置方法。

    nginx反向代理服务

    【Nginx反向代理服务】是网络服务器配置中的一个重要概念,主要应用于负载均衡和安全性增强。Nginx是一款高性能的HTTP和反向代理服务器,以其高效、稳定和低内存占用而闻名。在Linux系统中部署Nginx,可以极大地提升...

    nginx 反向代理.docx

    ### Nginx 反向代理知识点详解 #### 一、代理概述 代理是一种常见的网络通信方式,它在客户端与服务器之间架设了一座桥梁。在实际应用中,代理分为正向代理和反向代理两种类型。 **代理的概念:** 在Java设计模式...

Global site tag (gtag.js) - Google Analytics