关键字:
问题描述:
通过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反向代理后,可以通过域名访问Linux下部署的Tomcat,但却访问不到部署的项目问题
通过使用Nginx 反向代理来解决JS跨域问题 http://blog.csdn.net/mzhaocai/article/details/79238338
Nginx反向代理服务器配置基础教程
两边通过同一个nginx进行反向代理,nginx配置大致如下, location /health/ { proxy_pass http://192.168.40.159:8081/health/; #无问题的配置 } location /health-dev/ { proxy_pass ...
nginx多网站反向代理
3.找到D:\nginx\conf下nginx.conf文件用记事本打开 在文段末尾大括号前加上 include proxy.conf;(就是加载刚刚新建的那个文件(注意路径)) 4.进入cmd 进入D盘: d: 进到nginx文件夹下:cd nginx 启动nginx.exe:...
教程视频:Nginx反向代理web服务器,后台java控制连接访问。
nginx反向代理配置 动静分离不错的代理
https服务器nginx反向代理配置,SSL连接下的域名访问应用服务器配置
尝试将 C2 隐匿于多级 nginx 反向代理关于利用多级 nginx 反代实现 beacon 上线的大致思路拓扑大致思路是这样,首先,我们会用一个 CS 的外
然后k兄就提议可以在内网搭建个nginx反向代理服务器,将nginx反向代理服务器的80映射到外网IP的80,这样指向到公司外网IP的域名的HTTP请求就会发送到nginx反向代理服务器,利用nginx反向代理将不同域名的请求转发给...
windows下配置nginx反向代理tomcat,从下载地址开始讲起,第二步讲常用命令 第三步讲了一个实例,第四步是配置说明
如何取得 nginx 做反向代理时的真实 IP
此文比较详细讲述了Nginx与proxy共同搭建反向代理服务的配置方法
nginx反向代理、负载均衡、缓存静态资源、URL重定向、读写分离.zip
nginx反向代理配置文件: - 客户端和nginx之间通过https连接 - nginx和服务器端之间通过http连接
nginx反向代理tcp端口详细操作说明,代理所有tcp端口说明
Nginx反向代理Tomcat服务器.pdf
local.windons.com.conf该文件为具体反向代理配置文件, 文件名随便起, 内容: server { listen 80; root /; server_name local.windons.com; -----> 代理目标地址,...
nginx反向代理教程, 腾讯应用宝平台支付接入必须步骤.