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;