博主首页

nginx丢失头部信息

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;
}

 

posted @ 2022-04-24 20:46  笑~笑  阅读(1160)  评论(0)    收藏  举报