(转)nginx做转发时,带'_'的header内容丢失

原本在测试环境测试通过的APP,今天准备切到线上环境做最后测试,结果发现了错误。查看日志发现是APP端发送的http请求中的header内容丢失了。那么代码没有改动,怎么平白无故会丢失头信息? 
于是想到两个环境的不同之处在于线上是通过nginx做的代理转发,会不会是nginx搞的鬼?于是搜索“nginx request header 丢失”,果不其然是这个问题,nginx对下划线的头信息做了限制,找到问题所在就等于完成了一大半,办法总比困难多。遂决定记录之。 
方法一:不用下划线 
既然nginx对下划线不支持,那没关系,不用下划线就是了。比如原来”app_version”改成”app-version”就可以了。(难怪一般header的name都是’-‘来拼接的,比如”User-Agent”) 
方法二:从根本接触nginx的限制 
nginx默认request的header的那么中包含’_’时,会自动忽略掉。 
解决方法是:在nginx里的nginx.conf配置文件中的http部分中添加如下配置: 
underscores_in_headers on; (默认 underscores_in_headers 为off)

(转)nginx做转发时,带'_'的header内容丢失

原文地址:https://www.cnblogs.com/zjd2626/p/9047215.html

时间: 2024-12-21 09:10:17

(转)nginx做转发时,带'_'的header内容丢失的相关文章

使用Nginx做转发和匹配替换

Nginx是一个强大的服务器软件,由于处理数据内容处于第七层协议应用层的原因,所以获取的数据也比较完整: Nginx做转发: 这个很简单,vi nginx.conf(编辑nginx配置文件) 添加location /public/sexy.jpg{//这个是你域名访问的图片 proxy_pass http://www.tmp.jpg;#这个是你要替换的图片路径(加上http头) } 保存退出,重启nginx 就可以看到原本项目 http://xxx/public/sexy.jpg变成了http:

Nginx负载均衡,反向代理,再从防火墙做转发后,css样式与端口丢失!

Nginx负载均衡,反向代理,再从防火墙做转发后,报错,用外网IP+端口访问,结果css样式与端口都丢失!!!!!内网IP+端口访问,正常! 解决思路:用chrome的network标签,分析项目的路径与端口!将配置文件中无用的干掉! 亲测改好的配置文件,注意注释信息!!!! vi conf/nginx.conf worker_processes  auto; worker_rlimit_nofile 10000; events {     worker_connections  2048;  

Nginx 做代理服务器时浏览器加载大文件失败 ERR_CONTENT_LENGTH_MISMATCH 的解决方案

此文章仅作为本人的笔记,文章转载自  http://blog.csdn.net/defonds/article/details/46042809 Nginx 做反向代理,后端是 tomcat,chrome 浏览器访问项目时加载大文件失败 ERR_CONTENT_LENGTH_MISMATCH: 查看 linux 日志:2015/05/27 02:19:10 [crit] 29263#0: *72 open() "/usr/local/nginx/proxy_temp/3/00/000000000

Nginx做转发

二台服务器,服务器A做域名转外,所有外网的域名都到这台服务器A的80端口上,服务器B内网地址192.168.1.227, 上面IIS搭建了N多网站,以端口来区分,用以前的方式 配置转发 结果发现首页能打开,但是首页上的搜索按钮,后台代码用Response.Redirect跳转到其他页面后发现URL又自动带上端口地址, 经过一下午的问群里的朋友及不停搜索,终于解决!!!! 特此记录,以备不时之需!!!

nginx 做数据仓库时,location 404 Not Found,发现找不到要用的数据报:Not Found

背景:  获得远程机器某个目录下的数据文件 方案:使用Nginx配置 1./home/ftp/www/ 下面有images 文件夹,为了访问images下面文件,配置Nginx如下: location /images { root /home/ftp/www/images; autoindex on; } 然后报错为:location  404 Not Found,其实是因为你最终访问的是 /images == root + images = /home/ftp/www/images/image

Nginx/tengine做cache时缓存机制—存不存、存多久、用不用方法论(图自画)

Nginx/tengine(后面名称只写nginx了)单纯做cache性能比不过ats,特别是在磁盘处理方面,不过论综合能力nginx就是大拿了,他集web服务器.负载均衡.cache三种能力于一身,可以说是非常综合性的选手.比如说一个中型网站的场景选型,前端是负载,后端托着一堆apache服务器,现在该到前端负载选型的了,虽然lvs和ha单纯从负载的性能要比nginx好一些,但我还是会选nginx,因为nginx在做负载的同时,可以将热点的静态内容cache一遍,做一次加速,无形间减轻了后端w

nginx转发会 默认忽略 headers 中name带”_”的

昨天遇到一个很蛋疼的问题,在提供的一个 http api中,有定义了一个"X_AUTH_TOKEN"自定义head,可是请求这个api时带上"X_AUTH_TOKEN".总是得不到值.在本地没有nigix做转发的情况下一切正常,部署到生产环境(nginx做了转发的),就出现了这个蛋疼的问题,初步怀疑是niginx配置问题.最后锁定问题所在是: nginx转发会 默认忽略 headers 中带name带"_"的 如果我们不想改程序,想让nginx支

Nginx做负载均衡时session共享问题详解

用nginx做负载均衡时,同一个IP访问同一个页面会被分配到不同的服务器上,如果session不同步的话,就会出现很多问题,比如说最常见的登录状态. 再者Nginx连接Memcached集群时,Nignx的请求从memcached服务器中根据key获得了value则直接返回value,如果没有获得到value则去MySQL中查询再返回. location / { set $memcached_key "$request_uri"; #设置请求memcached服务器的key memca

【Nginx】使用Nginx做反向代理时,关于被代理服务器相应的超时设置

阅读目录 > 参考的优秀文章 > 设置等待被代理服务器的最大响应时间 > 参考的优秀文章 Module ngx_http_proxy_module > 设置等待被代理服务器的最大响应时间 使用Nginx做反向代理时,因被代理服务器因业务确实复杂,需时较久,往往超过60秒.而Nginx默认设置超时时间为60秒. 针对这一情况,需修改默认配置.因配置项中涉及超时的选项太多,这里记录一下. 等待被代理服务器的最大响应时间为120秒,需加如下配置: proxy_read_timeout 1