NGINX代理導致請求頭header中的信息丟失問題


問題描述:在請求時往請求頭header中放入了簽名sign_val信息,在接收請求時再從header中拿出,在本地調試時是可以的,但通過NGINX代理之后發現拿不到。
解決:
1.NGINX代理時加上請求頭信息:

  location / 
    {
        proxy_next_upstream http_502 http_504 error timeout invalid_header;
        proxy_set_header Host  $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://web1;
        }

發現沒有解決,最后發現是NGINX對header有所限制,下划線(_)不支持。
方法一:不用下划線
把下划線_改成其他的,如sign_val改成sign-val

方法二:從根本解除nginx的限制
nginx默認request的header的那么中包含’_’時,會自動忽略掉。
解決方法是:在nginx里的nginx.conf配置文件中的http部分中添加如下配置:
underscores_in_headers on; (默認 underscores_in_headers 為off)
我使用的是方法一,方法二沒有試。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM