Nginx代理时header头中带_信息丢失问题的解决
前⾔
开发⽹关项⽬时,在请求时往请求头header中放⼊了签名sign_key信息,在接收请求时再从header中拿出,在本地调试时是可以的,但上线之后通过Nginx代理之后发现拿不到。
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Nginx-Proxy true;
add_header Proxy-Node $upstream_addr;
add_header Proxy-Status $upstream_status;
proxy_http_version 1.1;php中header是什么意思
proxy_pass tianusa;
}
后来到原因是因为Nginx对header有所限制,下划线(_)不⽀持
解决⽅法:
1.不⽤下划线
把下划线_改成其他的,如sign_key改成sign-key
2.从根本解除Nginx的限制
Nginx默认request的header的那么中包含'_'时,会⾃动忽略掉。
解决⽅法是:在nginx⾥的f配置⽂件中的http部分中添加如下配置:
underscores_in_headers on; (默认 underscores_in_headers 为off)
总结
以上就是这篇⽂章的全部内容了,希望本⽂的内容对⼤家的学习或者⼯作具有⼀定的参考学习价值,如果有疑问⼤家可以留⾔交流,谢谢⼤家对的⽀持。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论