http core主要用来控制处理客户端的请求方式。
主要参数:
sendfile on;使用文件描述符拷贝数据,在内核状态下完成 tcp_nopush on;在sendfile开启时有效 keepalive_timeout 60; 长连接(一次连接可以连续发送多个数据包)超时时间 tcp_nodelay on;在keepalive开启时有效 client_body_buffer_size 128k; 指定连接请求实体的缓冲区大小 client_max_body_size 100m; 指定最大连接请求实体的大小 client_header_buffer_size 64k; 指定连接请求实体头部的缓冲区大小 large_client_header_buffers 4 64k; 指定客户端头部比较大的使用缓冲区数量、大小 server_tokens off; 关闭nginx的版本信息 server_names_hash_max_size 1024; 名称哈希表的最大值 server_names_hash_bucket_size 256 名称哈希表每个页面的大小
注:依据/sys/devices/system/cpu/cpu0/cache/index1/size来决定hash表的大大小,一般是倍数关系。
location参数:根据uri匹配。
匹配遵循下面顺序:
1、= 精确匹配、匹配到则立即停止查询
2、^~ 正则匹配、匹配到则立即停止查询
3、正则表达式按照他们在配置文件中定义的顺序
4、如果第三条产生一个匹配,这个匹配将被使用,否则将使用第二条的匹配
这里有个特例 就是"location /",它匹配以后还会继续搜索匹配
例子:
location ^~ / { root n1.example.com; } location ~* \.(gif|jpg|jpeg|png) { root n1.example.com/photo; }
在n1.example.com/photo/下有test.png文件。
此时访问http://192.168.110.128/test.png是访问不到的。因为^~比~*优先级高,首先匹配第一个location,匹配到就停止查询。而此时n1.example.com目录下没有test.png。要使第二个有效就必须
将"^~"修改成""。
server_name参数:将http请求的主机头与参数值匹配
域名遵循优先级规则:
完整匹配的名称
名称开始于一个文件通配符:*.example.com
名称结束于一个文件通配符:www.example.*
使用正则表达式的名称。
如果没有匹配到,遵循下面优先级
listen指令标记为default的server字段
第一个出现listen的server字段。
error_page参数:为错误代码指定相应的错误页面
error_page 401 402 403 404 /40x.html;
如果出现401、402、403、404错误则重定向到/40x.html页面,这个页面的位置需要结合匹配规则。
一般会为错误页面定义一个独立的匹配规则,比如
location =/40x.html {
root html; #到html这个目录寻找这个页面
}
如果需要php页面也返回错误页面必须开启下面这个参数
fastcgi_intercept_errors on;