nginx反向代理導致頭部信息丟失

問題展現:

原本應該攜帶token信息訪問頁面時,沒有攜帶token導致出現驗證失敗,無法登陸

在這裏插入圖片描述

問題分析:

nginx在代理時,後端拿不到前段發過去的請求頭信息,導致接口不通。(但是在本地是可以拿到的)

主要原因爲nginx在做反向代理時,沒有在請求時添加頭部信息的配置。

解決方法

1、在nginx中添加相應配置,使其能夠攜帶頭部信息通信

server {
    listen 443 ssl;
    server_name test.com;
    ssl_certificate cert/test_line.pem;
    ssl_certificate_key cert/test_line.key;
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    # 重寫請求頭部host字段
    proxy_set_header Host $host;
    # 重寫來源IP
    proxy_set_header X-Real-IP $remote_addr;
    # 重寫http請求來源
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

添加完成後重啓nginx容器docker restart nginx,發現依舊無法登陸,經過檢查發現原因爲前端頁面header中含有_,而nginx默認會自動忽略_

2、在http端中添加

http {
    include       /etc/nginx/mime.types;

    ......

    include /etc/nginx/conf.d/*.conf;

    # 該配置默認情況爲off
    underscores_in_headers on;
}

重啓容器,登陸成功!!

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章