会话丢失-NGINX配置之underscores_in_headers

canca11个月前 (06-26)nginx543

1.描述

问题

NGINX代理某个web服务时,单机情况下也出现不停的要求认证的情况

初步分析

去掉NGINX代理,直接访问服务,未出现上述情况;

进一步分析:

查看经过NGINX的请求和直接访问服务请求区别:

cookie中的部分带下划线’_'的认证信息丢失导致,因此出现重复要求认证。

2.解决办法

在NGINX,配置文件http {} 模块中添加如下配置:

underscores_in_headers on;

重启NGINX服务,再次访问服务正常。

3.官方解释

Syntax: underscores_in_headers on | off;
Default: underscores_in_headers off;
Context: http, server

Enables or disables the use of underscores in client request header fields. When
the use of underscores is disabled, request header fields whose names contain underscores
are marked as invalid and become subject to the ignore_invalid_headers directive.

由官方解释可以看出,默认情况下,underscores_in_headers为off,表示当客户端请求头中带有下划线的字段默认将会被标识为无效字段。

因此,如下两个建议:

  • 尽量不要在请求头中添加带下划线的字段;

  • 使用NGINX代理的时候,添加underscores_in_headers on的配置。


相关文章

nginx 反向代理时丢失端口的解决方案,443端口变80

今天,配置nginx反向代理时遇到一个问题,当设置nginx监听80端口时转发请求没有问题。但一旦设置为监听其他端口,就一直跳转不正常;如,访问欢迎页面时应该是重定向到登录页面,在这个重定向的过程中端...

nginx变量

nginx变量

与request有关的变量 1,$arg_name 请求行中,名称为name的参数的值。比如,当请求行是"GET /nginx/varinde...

nginx if判断&&和||写法

今天在写nginx配置的时候需要用到if判断的&&,但是查了一下文档if并不支持&&的写法,现在将方法记录一下①nginx if判断&&(并且)写法,即...

Nginx 之 ip_hash 问题

起因公司项目上用到了Asp.Net Core SignalR,由于SignalR需要长链接,所以在进行水平扩展的时,不仅需要Redis做底板,还需要将同一个链接的请求打到同一台机器上;作为一个资深面相...

Nginx 获取自定义请求header头和URL参数

一、获取 header 请求头在 ngx_lua 中访问 Nginx 内置变量 ngx.var.http_HEADER 即可获得请求头HEADER的内容。在 nginx配置中,通过$http_HEAD...

详解nginx的root与alias

详解nginx的root与alias

nginx版本: 1.18.01. 结论location命中后如果是root,会把请求url的 ip/域名+port替换为root指定的目录,访问资源如果是alias,会把请求url的ip/域名+po...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。