nginx的配置相对简单,总体来说分为5种模块
- 全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
- events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
- http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
- server块:配置虚拟主机的相关参数,一个http中可以有多个server。
- location块:配置请求的路由,以及各种页面的处理情况。可以理解为路由规则配置。
常用配置及介绍
配置 | 说明 |
---|---|
全局块 | |
user administrator administrators; | 配置用户或者组,默认为nobody nobody |
worker_processes 4; | 允许生成的进程数,默认为1 |
pid /nginx/logs/nginx.pid; | 指定nginx进程运行文件存放地址 |
error_log log/error.log debug; | 制定日志路径,级别。 这个设置可以放入全局块,http块,server块, 级别依次为:debug | info | notice | warn | error | crit | alert | emerg |
events 块 | |
accept_mutex on; | 设置网路连接序列化,防止惊群现象发生,默认为on |
multi_accept on; | 设置一个进程是否同时接受多个网络连接,默认为off |
use epoll; | 事件驱动模型,select | poll | kqueue | epoll | resig | /dev/poll | eventport |
worker_connections 1024; | 最大连接数,默认为512 |
http块 | |
include mime.types; | include:用来加载其他配置文件。 mime.types文件扩展名与文件类型映射表 |
default_type application/octet-stream; | 默认文件类型,默认为text/plain |
access_log off; | 开启/取消服务日志 |
log_format formatName ‘格式模板’; | 日志自定义格式,参数说明 |
access_log logs/access.log formatName; | 日志存储位置及格式,combined为日志格式的默认值 |
sendfile on; | 允许sendfile方式传输文件,默认为off, 可以在http块,server块,location块。 |
sendfile_max_chunk 100k; | 每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。 |
keepalive_timeout 65; | 连接超时时间,默认为75s,可以在http,server,location块。 |
gzip on; | 是否开启 |
error_page 404 error/404.html; | 配置错误页面,可以在http,server,location块。 |
server块 | |
keepalive_requests 120; | 单连接请求上限次数。 |
listen 80; | 监听http端口 |
listen 443 ssl; | 监听https端口 |
server_name 127.0.0.1; | 监听地址,可以是IP地址,也可以是域名, 可以同时配置多个地址,用空格隔开。 |
root E:/wwwroot/thinkphp5.1/public; | 网站根目录,可以在server块,location块 |
index index.php index.html; | 设置默认页,可以在server块,location块 |
deny 127.0.0.1; | 拒绝的ip |
allow 192.168.0.100; | 允许的ip |
location块 | |
location [=|~|~*|^~] uri { … } | 方括号中的四种标识符是可选项,用来改变请求字符串和uri的匹配方式 uri是待匹配的请求字符串, 可以是不包含正则的字符串,这种模式被称为“标准uri"; 也可以包含正则,这种模式被称为"正则uri" |
日志格式参数
参数 | 说明 |
---|---|
$remote_addr $http_x_forwarded_for | 用以记录客户端的ip地址 |
$remote_user | 用来记录客户端用户名称 |
$time_local | 用来记录访问时间与时区 |
$request | 用来记录请求的url与http协议 |
$status | 用来记录请求状态,成功是200 |
$body_bytes_sent | 记录发送给客户端文件主体内容大小 |
$http_referer | 用来记录从那个页面链接访问过来的 |
$http_user_agent | 记录客户端浏览器的相关信息 |
location参数
标识符 | 说明 |
---|---|
= | 精确匹配:用于标准uri前,要求请求字符串和uri严格匹配。 如果匹配成功就停止匹配,立即执行该location里面的请求。 |
~ | 正则匹配:用于正则uri前,表示uri里面包含正则,并且区分大小写。 |
~* | 正则匹配:用于正则uri前,表示uri里面包含正则,不区分大小写。 |
^~ | 非正则匹配;用于标准uri前,nginx服务器匹配到前缀最多的uri后就结束, 该模式匹配成功后,不会使用正则匹配。 |
无 | 普通匹配(最长字符匹配);与location顺序无关,是按照匹配的长短来取匹配结果。 若完全匹配,就停止匹配。 |