underscores_in_header 是一个 Nginx 配置选项,用于控制 Nginx 是否应该忽略使用下划线字符作为 HTTP 请求头中的一部分的请求。默认情况下,Nginx 不允许在请求头中使用下划线字符。

HTTP 协议中的请求头 (key-value格式) 需要满足一定的格式要求,RFC2616 规范定义了 HTTP 协议中的 Header Field 语法,并要求 header field 字段名称中不能包含下划线(_)字符。在 2006 年开发的 RFC 接着修改了规范,将下划线的使用作为了一个可选的特性,并允许 HTTP 应用程序使用以前被禁止的 _ 字符,前提是它涉及到 WEbDAV 或某些其他规范。

如果服务器端的应用中要求使用正文或者文件中的下划线作为请求头部中的字段名,你需要在 nginx 的配置中设置underscores_in_header 为 on, 使 nginx 尽可能去支持下划线。

可以在 Nginx 配置文件的 http、server 或 location 段中设置该选项,例如:

http {
    underscores_in_headers on;
}