ngx_http_core_module模块
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ngx_http_core_module模块相关的知识,希望对你有一定的参考价值。
一、与套接字相关的配置:
1、server {...} 配置一个虚拟主机
server { listen address[:PORT]|PORT; server_name SERVER_NAME; root /PATH/TO/DOCUMENT_ROOT }
2、listen PORT|address[:PORT]|unix:/PATH/TO/SOCKET_FILE
listen address[:PORT] [default_server] [ssl] [http2 | spdy] [backlog=number] [rcvbuf=size] [sndbuf=size]
default_server 设定为默认虚拟主机
ssl 限制能够通过ssl连接提供服务
backlog=number 超过并发连接数后,新请求进入后援队列的长度
rcbuf=size 接收缓冲区大小
sndbuf=size 发送缓冲区大小
注意:
1)基于port;
listen PORT;指令监听在不同的端口(即:包括80端口在内的端口都是监听的)
2)基于ip的虚拟主机
listen IP:PORT IP地址不同
3)基于hostname
server_name FQDN;指令指向不同的主机名
注意:有子配置文件的时候,访问默认站点时,生效的配置文件为按子文件名字母排序的顺序,但是如果指定了default_server时,则是指定的站点为默认站点
3、server_name name ...;
虚拟主机的主机名后可跟由多个空白字符分割的字符串
支持*通配任意长度的任意字符
server_name *.yuanjianchao.tech www.yuanjianchao.*
支持~起始的字符做正则表达式模式匹配,性能原因慎用
server_name ~^www\d+\.magedu\.com$ ('\d 表示 [0-9]')
匹配优先级机制从高到低
1)首先是字符串精确匹配 如:www.jianchao.tech
2)左侧*通配符 如:*.jianchao.tech
3)右侧*通配符 如:www.jianchao.*
4)正则表达式 如:~^.*\.jianchao\.tech$
5)default_server
4、tcp_nodelay on | off(Context:http,server,location)
在keepalived模式下的连接是否启用TCP_NODELAY选项,当为off时,延迟发送,合并多个请求后再发送,默认为on,不延迟发送
5、sendfile on | off
是否启用sendfile功能,在内核心中封装报文直接发送默认为off
6、server_tokens on | off | build | string
是否在相应报文而非server首部显示nginx版本(建议在主配置文件中改为off)
7、root
设置web资源的路径映射;用于指明请求的URL所对应的文档的目录路径,可用于http, server, location, if in location
server { ... root /data/www/vhost1; }
8、location [ = | ~ | ~* | ^~ ] uri { ... }
location @name { ... }
在一个server中location配置段可存在多个,用于实现从uri到文件系统的路径映射;ngnix会根据用户请求的URI来检查定义的所有location,并找出一个最佳匹配,而后应用其配置
示例:
server { ... server_name www.yuanjianchao.tech; location /images/ { root /data/imgs/; } }
实验结果:http://www.yuanjianchao.tech/images/logo.jpg--> /data/imgs/images/logo.jpg
=:对URI做精确匹配;
location = / { ... }
匹配结果:http://www.magedu.com/ 匹配 http://www.magedu.com/index.html 不匹配
^~:对URI的最左边部分做匹配检查,不区分字符大小写
~:对URI做正则表达式模式匹配,区分字符大小写
~*:对URI做正则表达式模式匹配,不区分字符大小写
不带符号:匹配起始于此uri的所有的uri
匹配优先级从高到低:
=, ^~, ~/~*, 不带符号
9、alias path(适用范围location)
路径别名,文档映射的另一个机制;仅能用于location上下文
示例:
http://www.magedu.com/bbs/index.php
location /bbs/ { alias /web/forum/; } --> /web/forum/index.html(实际访问文件) location /bbs/ { root /web/forum/; } --> /web/forum/bbs/index.html(实际访问文件)
注意:
location中使用root指令和alias指令的意义不同
(a) root,给定的路径对应于location中的/uri/左侧的/
(b) alias,给定的路径对应于location中的/uri/右侧的/
10、index file ...;(Context:http,server,location)
指定默认网页资源,注意:所属模块ngx_http_index_module
11、error_page code ... [=[response]] uri;(Context:http, server, location, if in location) 所属模块:ngx_http_core_module
定义错误页,以指定的响应状态码进行响应
error_page 404 /404.html
error_page 404 =200 /404.html
12、try_files file ... uri;
try_files file ... =code;
按顺序检查文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线表示为文件夹),如果所有的文件或文件夹都找不到,会进行一个内部重定向到最后一个参数。只有最后一个参数可以引起一个内部重定向,之前的参数只设置内部URI的指向。最后一个参数是回退URI且必须存在,否则会出现内部500错误
location /images/ { try_files $uri /images/default.gif;(路径是相对于网站root目录的路径,即是url路径) } location / { try_files $uri $uri/index.html $uri.html =404; }
二、定义客户端请求的相关配置
13、keepalive_timeout timeout [header_timeout];(Context:http,server,location)
设定保持连接超时时长,0表示禁止长连接,默认为75s
14、keepalive_requests number;(Context:http,server,location)
在一次长连接上所允许请求的资源的最大数量默认为100
15、keepalive_disable none | browser ...(Context:http,server,location)
对哪种浏览器禁用长连接
16、send_timeout time;(Context:http,server,location)
向客户端发送响应报文的超时时长,此处是指两次写操作之间的间隔时长,而非整个响应过程的传输时长
17、client_body_buffer_size size;
用于接收每个客户端请求报文的body部分的缓冲区大小;默认为16k;超出此大小时,其将被暂存到磁盘上的由client_body_temp_path指令所定义的位置
18、client_body_temp_path path [level1 [level2 [level3]]];
设定用于存储客户端请求报文的body部分的临时存储路径及子目录结构和数量目录名为16进制的数字;client_body_temp_path /var/tmp/client_body 1 2 2
1 1级目录占1位16进制,即2^4=16个目录 0-f
2 2级目录占2位16进制,即2^8=256个目录 00-ff
2 3级目录占2位16进制,即2^8=256个目录 00-ff
三、对客户端进行限制的相关配置
19、limit_rate rate;
限制响应给客户端的传输速率,单位是bytes/second默认值0表示无限制
20、limit_except method ... { ... },
仅用于location限制客户端使用除了指定的请求方法之外的其它方法method:GET, HEAD, POST, PUT, DELETE,MKCOL, COPY, MOVE, OPTIONS, PROPFIND,PROPPATCH, LOCK, UNLOCK, PATCH
limit_except GET { allow 192.168.1.0/24;(可以是特定IP) deny all; } 除了GET和HEAD 之外其它方法仅允许192.168.1.0/24网段主机使用
四、文件操作优化的配置
21、aio on | off | threads[=pool];(异步)
是否启用aio功能
22、directio size | off;
是否同步(直接)写磁盘,而非写缓存,在Linux主机启用O_DIRECT标记,则文件大于等于给定大小时使用,例如directio 4m
23、open_file_cache off;
open_file_cache max=N [inactive=time];
nginx可以缓存以下三种信息:(元数据)
(1) 文件元数据:文件的描述符、文件大小和最近一次的修改时间
(2) 打开的目录结构
(3) 没有找到的或者没有权限访问的文件的相关信息
max=N:可缓存的缓存项上限;达到上限后会使用LRU算法实现管理
inactive=time:缓存项的非活动时长,在此处指定的时长内未被命中的或命中的次数少于open_file_cache_min_uses指令所指定的次数的缓存项即为非活动项 , 将被删除
24、open_file_cache_errors on | off;
是否缓存查找时发生错误的文件一类的信息 默认值为off
25、open_file_cache_min_uses number;
open_file_cache指令的inactive参数指定的时长内,至少被命中此处指定的次数方可被归类为活动项默认值为1
26、open_file_cache_valid time;
缓存项有效性的检查频率 默认值为60s
以上是关于ngx_http_core_module模块的主要内容,如果未能解决你的问题,请参考以下文章