下面介绍对客户端请求的特殊处理的配置项。
(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版本,这是为了方便定位问题。