nginx自定义header问题记录

时间:2022-07-22
本文章向大家介绍nginx自定义header问题记录,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

问题记录

针对访问后台人数过多,导致源站压力巨大的问题,研发自定义了一个header信息,用来设置缓存,并判断是否命中header。针对这个问题,在测试环境进行测试时,发现自定义的header信息被nginx过滤掉了,经过一方查询,发现需要在nginx的配置里增加一个配置项,用来支持下划线的header

解决方法

nginx增加配置项

underscores_in_headers on; #默认是关闭的

nginx是支持读取非nginx标准的用户自定义header的,但是需要在http或者server下开启header的下划线支持:

子配置文件参考

server
  {
    listen       80;
    server_name  alpha-dazzle.xxxxxxxxx.com;
    underscores_in_headers on;

    location /xyapi/
    {
        proxy_set_header dazzle-Redis-Cache $host;   #设置自定义的header,并传递给下一个nginx
        proxy_redirect          off;
        proxy_set_header        Host $host;
        proxy_set_header        X-Real-IP $remote_addr;  #获取真实ip
        #proxy_set_header       X-Forwarded-For   $proxy_add_x_forwarded_for; #获取代理者的真实ip
        client_max_body_size    20480m;
        client_body_buffer_size 128k;
        proxy_connect_timeout   90;
        proxy_send_timeout      90;
        proxy_read_timeout      90;
        proxy_buffer_size       128k;
        proxy_buffers           2 256k;
        proxy_busy_buffers_size 256k;
        proxy_temp_file_write_size 256k;
        proxy_pass http://xyapi/;
        access_log  /data/logs/nginx/xyapi-bigdata.log  bigdata-json;
        access_log  /data/logs/nginx/xyapi-grafana.log  grafana;
        add_header Redis-Cache '11';
    }
}

修改完重启nginx,测试即可,下面是我的测试结果