nginx http core模块学习

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文件。
此时访问是访问不到的。因为^~比~*优先级高,首先匹配第一个location,匹配到就停止查询。而此时n1.example.com目录下没有test.png。要使第二个有效就必须
将"^~"修改成""。


server_name参数:将http请求的主机头与参数值匹配
域名遵循优先级规则:

完整匹配的名称
名称开始于一个文件通配符:*.example.com
名称结束于一个文件通配符:*
使用正则表达式的名称。

如果没有匹配到,遵循下面优先级
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;

相关阅读:

搭建基于Linux6.3+Nginx1.2+PHP5+MySQL5.5的Web服务器全过程

LNMP 全功能编译安装 for CentOS 6.3笔记

CentOS 6.3 安装LNMP (PHP 5.4,MyySQL5.6)

在部署LNMP的时候遇到Nginx启动失败的2个问题

Ubuntu安装Nginx php5-fpm MySQL(LNMP环境搭建)

Nginx 的详细介绍请点这里
Nginx 的下载地址请点这里

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/6e9bb38a9c0e0b4bb473c875a5ce6241.html