nginx对header 的名字字符做了限制,默认 underscores_in_headers 为off,表示如果header name中包含下划线,则忽略掉,后端服务就获取不到该请求头。
为了支持header带下划线的参数,可以在http内或者server内设置如下参数:
underscores_in_headers on;//默认是off
如nginx的配置如下:
http {
log_format main '$http_app_id';
access_log /var/log/nginx/access.log main;
........
}
带上自定义header【app_id】去请求nginx
打印的日志如下,无法获取值:
配置文件中加上【underscores_in_headers on;】
http {
log_format main '$http_app_id';
access_log /var/log/nginx/access.log main;
underscores_in_headers on;
........
}
再次带上自定义header【app_id】去请求nginx,日志找那个就可以打印出自定义header【app_id】的值了