2.4.8 对客户端请求的特殊处理

下面介绍对客户端请求的特殊处理的配置项。

(1)忽略不合法的HTTP头部

语法:ignore_invalid_headers on|off;

默认:ignore_invalid_headers on;

配置块:http、server

如果将其设置为off,那么当出现不合法的HTTP头部时,Nginx会拒绝服务,并直接向用户发送400(Bad Request)错误。如果将其设置为on,则会忽略此HTTP头部。

(2)HTTP头部是否允许下画线

语法:underscores_in_headers on|off;

默认:underscores_in_headers off;

配置块:http、server

默认为off,表示HTTP头部的名称中不允许带“_”(下画线)。

(3)对If-Modified-Since头部的处理策略

语法:if_modified_since[off|exact|before];

默认:if_modified_since exact;

配置块:http、server、location

出于性能考虑,Web浏览器一般会在客户端本地缓存一些文件,并存储当时获取的时间。这样,下次向Web服务器获取缓存过的资源时,就可以用If-Modified-Since头部把上次获取的时间捎带上,而if_modified_since将根据后面的参数决定如何处理If-Modified-Since头部。

相关参数说明如下。

❑off:表示忽略用户请求中的If-Modified-Since头部。这时,如果获取一个文件,那么会正常地返回文件内容。HTTP响应码通常是200。

❑exact:将If-Modified-Since头部包含的时间与将要返回的文件上次修改的时间做精确比较,如果没有匹配上,则返回200和文件的实际内容,如果匹配上,则表示浏览器缓存的文件内容已经是最新的了,没有必要再返回文件从而浪费时间与带宽了,这时会返回304 Not Modified,浏览器收到后会直接读取自己的本地缓存。

❑before:是比exact更宽松的比较。只要文件的上次修改时间等于或者早于用户请求中的If-Modified-Since头部的时间,就会向客户端返回304 Not Modified。

(4)文件未找到时是否记录到error日志

语法:log_not_found on|off;

默认:log_not_found on;

配置块:http、server、location

此配置项表示当处理用户请求且需要访问文件时,如果没有找到文件,是否将错误日志记录到error.log文件中。这仅用于定位问题。

(5)merge_slashes

语法:merge_slashes on|off;

默认:merge_slashes on;

配置块:http、server、location

此配置项表示是否合并相邻的“/”,例如,//test///a.txt,在配置为on时,会将其匹配为location/test/a.txt;如果配置为off,则不会匹配,URI将仍然是//test///a.txt。

(6)DNS解析地址

语法:resolver address……;

配置块:http、server、location

设置DNS名字解析服务器的地址,例如:


resolver 127.0.0.1 192.0.2.1;


(7)DNS解析的超时时间

语法:resolver_timeout time;

默认:resolver_timeout 30s;

配置块:http、server、location

此配置项表示DNS解析的超时时间。

(8)返回错误页面时是否在Server中注明Nginx版本

语法:server_tokens on|off;

默认:server_tokens on;

配置块:http、server、location

表示处理请求出错时是否在响应的Server头部中标明Nginx版本,这是为了方便定位问题。