user nginx; //nginx运行时是以谁的身份开启的子进程
worker_processes auto; //进程数,auto是自动和CPU核数相对应
worker_priority number; //指定worker 进程的nice 值,设定worker 进程优先级:[-19,19]
error_log /var/log/nginx/error.log info; //错误日志的路径和级别
pid /var/run/nginx.pid; //指定存储nginx 主进程PID 的文件路径
include file //指明包含进来的其它配置文件片断
events {
worker_connections 30000; //每个worker 进程所能够打开的最大并发连接数数量,默认是1024,一般都不够,调大
use epoll; //指明并发连接请求的处理方法, 默认自动选择最优方法
}
accept_mutex on/off; //前台|后台运行
3.2 http 协议段的相关配置格式介绍
http { //可以放多个server段
... ...
server {
...
server_name
root
location [OPERATOR] /uri/ {
...
}
}
server {
...
}
}
3.3 与套接字相关的配置(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 超过并发连接数后,新请求进入后援队列的长度
rcvbuf=size 接收缓冲区大小
sndbuf=size 发送缓冲区大小
注意:
① 基于port;
listen PORT; 指令监听在不同的端口
② 基于ip 的虚拟主机
listen IP:PORT; IP 地址不同
③ 基于hostname
server_name fqdn; 指令指向不同的主机名
(3)server_name name ...;
虚拟主机的主机名称后可跟多个由空白字符分隔的字符串
支持* 通配任意长度的任意字符
server_name *.magedu.com *
支持~ 起始的字符做正则表达式模式匹配,性能原因慎用
server_name ~^www\d+\.magedu\.com$
\d 表示 [0-9]
匹配优先级机制从高到低:
① 首先是字符串精确匹配 如:
② 左侧*通配符 如:*.magedu.com
③ 右侧* 通配符 如:*
④ 正则表达式 : 如: ~^.*\.magedu\.com$ ,因为消耗cpu运算
⑤ default_server
(4)tcp_nodelay on | off; 在长连接的情况下,是否延迟
在keepalived 模式下的连接是否启用TCP_NODELAY 选项
当为off 时,延迟发送,合并多个请求后再发送
默认On 时,不延迟发送
可用于:http, server, location
(5)sendfile on | off;
是否启用sendfile 功能,在内核中封装报文直接发送,默认Off
(6)server_tokens on | off | build | string
是否在响应报文的Server 首部显示nginx版本
3.4 定义路径相关的配置(7)root
设置web 资源的路径映射;用于指明请求的URL 所对应的文档的主目录路径,可用于http, server, location, if in location
server {
...
root /data/www/vhost1;
}
示例
--> /data/www/vhosts/images/logo.jpg
注意:root 不仅可以用在server段,还可用于http、server、location、if in locatin
(8)location [ = | ~ | ~* | ^~ ] uri { ... } 主要控制URL路径
location @name { ... }
在一个server 中location 配置段可存在多个,用于实现从uri到文件系统的路径映射;ngnix 会根据用户请求的URI 来检查定义的所有location ,并找出一个最佳匹配,而后应用其配置
示例:
① server {...
server_name ;
location /images/ {
root /data/imgs/;
}
}
--> /data/imgs/images/logo.jpg
② = :对URI 做精确匹配;
location = / {
...
}
匹配
不匹配
③ 正则符号的作用
^~:对URI 的最左边部分做匹配检查,不区分字符大 小写
~:对URI 做正则表达式模式匹配,区分字符大小写
~* :对URI 做正则表达式模式匹配,不区分字符大小写
不带符号:匹配起始于此uri 的所有的uri
④ 匹配优先级从高到低:
=, ^~, ~/ ~*, 不带符号
(9)alias path;
路径别名,文档映射的另一种机制;仅能用于location 上下文
示例:
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 ...;
指定默认网页资源,注意:ngx_http_index_module 模块
例:index index.php index.html
(11)error_pagecode ... [=[response]] uri; 错误页面
模块:ngx_http_core_module
定义错误页, 以指定的响应状态码进行响应
可用位置:http, server, location, if in location
error_page 404 /404.html
error_page 404 =200 /404.html 错误状态码改为200,还是原来的错误页面
(12)try_files file ... uri;
try_files file ... =code;
按顺序检查文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线表示为文件夹),如果所有的文件或文件夹都找不到,会进行一个内部重定向到最后一个参数。只有最后一个参数可以引起一个内部重定向,之前的参数只设置内部URI 的指向。最后一个参数是回退URI 且必须存在,否则会出现内部500 错误
location /images/ {
try_files $uri /images/default.gif;
}
location / {
try_files $uri $uri/index.html $uri.html =404;
}