在这里我们直接通过yum源安装:
#yum info nginx 查看nginx基于哪个源,当前nginx版本等
#yum install nginx 安装nginx
#nginx 启动
#nginx -s stop 停止
#nginx -s reload 平滑reload,对此前接进来的用户不受影响
官方的预制包:
http://nginx.org/packages/centos/7/x86_64/RPMS/
Nginx主配置文件:/etc/nginx/nginx.conf
默认网站根路径:/usr/share/nginx/html
配置文件的配置指令规范:
directive value1 [value2...]; 指令值
注意:
(1)指令必须以分号结尾;
(2)支持使用配置变量;
由模块引入:内建变量;
由用户引用:自定义变量;
set命令:set variable_name value;
引用变量:$variable_name
配置文件结构:
main block:主配置段,全局配置段;
events {
...
}
事件驱动配置;
http {
...
}
http/https:等相关的配置段;
mail {
...
}
mail:邮件的相关配置段;
全局配置段:
分类:
- 正常运行必备的配置;
- 优化性能相关的配置;
- 用于调试及定位问题相关的配置;
正常运行必备的配置;
1、user USERNAME [GROUPNAME];
指定用于运行worker进程的用户和组;
2、pid /PATH/TO/PID_FILE
指定守护nginx进程的pid文件路径;
3、worker_rlimit_nofile #;
单个worker进程所能够打开的最大文件数量;
性能优化相关的配置:
1、worker_processes NUMBER | auto;
worker进程的数量;通常应该为cpu核心数量
worker_processes 2
2、worker_cpu_affinity CPUMASK ...;
worker_cpu_affinity auto [cpumask];
CPUMASK指定使用哪颗CPU
(如果有四颗CPU,0001表示第一颗,0010表示第二颗)
3、worker_priority nice;
设定NICE值优先级[-20,19]
调试、定位问题相关的配置:
1、daemon on | off ;
是否以守护进程方式运行nginx进程;
2、mastet_process on | off;
是否以master/worker模型启动nginx进程;
3、error_log file [level];
错误日志文件位置及其级别;
4、thread_pool name threads=number [max_queue=number];
线程池中的线程数量,及后援队列的长度;
events事件驱动配置段(存在于main block上下文):
1、 worker_connections number;
每个worker进程所能够并发打开的最大连接数;
worker_processes * worker_connections
2、use method;
指明并发连接请求处理时使用的方法;
use epoll;
3、accept_mutex on | off;
设置worker进程之间的负载均衡锁,表示用于让多个worker轮流地、序列化地响应新请求,默认开启;
http配置段:
分类:
- 定义套接字相关功能
- 定义路径相关配置
- 定义客户端请求的相关配置
- 对客户的请求进行限制的相关配置
- 文件操作优化的配置
- 等(此处只介绍以上五类)
定义套接字相关功能:
1、server { ... }定义新的server上下文,定义于http上下文中;
配置一个虚拟主机;支持IP、主机名和端口;
定义方式:
server {
listen PORT;
server_name HOSTNAME;
root /PATH/TO/DOCUMENTROOT;
...
}
注意:
(1) 基于port的虚拟主机;
listen指令要使用不同的端口;
(2) 基于Hostname的虚拟主机;
server_name指令指向不同的主机名;
(3) 基于ip的虚拟主机;
listen IP:PORT;
例:
/etc/nginx/nginx.conf主配置文件中http上下文中定义:include /etc/nginx/conf.d/*.conf;(默认是这个,可以手动添加更改)
在/etc/nginx/conf.d/*.conf对应的路径下,创建*.conf的虚拟主机;这样每个虚拟主机对应一个文件,易于管理;
server{
listen 80;
server_name web.whsir.com;
root /web/host1;
}
2、listen
listen address[:port] [default_server] [ssl] [backlog=number] [rcvbuf=size] [sndbuf=size];
listen port [default_server] [ssl];
listen unix:path [default_server] [ssl] ;
address[:port]:端口默认80;
default_server:设置默认虚拟主机;
ssl:限制只能通过ssl连接提供服务;
backlog:后缓队列的长度,等待响应的队列长度;
rcvbuf:接收缓冲大小;
sndbuf:发送缓冲区大小;
3、server_name name ...
指明当前server的主机名;后可跟一个或空白字符分隔的多个主机;
支持使用*任意长度的任意字符;
支持~起始的正则表达式模式字符串;
应用策略:
(1) 首先精确匹配; 例:server_name blog.whsir.com;
(2) 左则*通配符匹配;例:server_name *.whsir.com;
(3) 右侧*通配符匹配;例:server_name blog.whsir.*;
(4) 正则表达式模式匹配;例: server_name ~^.*\.whsir\..*$;
4、tcp_nodelay on | off;
对keepalived模式下的连接是否启用TCP_NODELAY选项;
5、sendfile on | off;
是否启用sendfile功能,默认关闭,需要启用;
定义路径相关配置:
1、root path
设置web资源路径映射,用于指明用户请求的url所对应的本地文件系统上的文档所在目录路径(网站根);
可用上下文包含:http, server, location, if
2、location两种使用方法
location [ = | ~ | ~* | ^~ ] uri { ... }
location @name { ... }
根据用户请求的URI来匹配定义的location,匹配到时,此请求将被相应的location块中的指令所处理;
/web/host1/images/1.jpg
http://www.xxx.com/images/1.jpg 这是URI
server {
...
location {
...
}
location ~*\.(gif|jpg|jpeg)$ {
...
}
}
可以定义多个location
=:URI精确匹配;
~:做正则表达式模式匹配,区分字符大小写;
~*:做正则表达式模式匹配,不区分字符大小写;
^~:对URI的左半部分做匹配检查,不区分字符大小写;
匹配优先级:=、^~、~/~*、不带符号;
3、alias path
定义路径别名,文档映射的一种机制;仅能用于location上下文;
alias /bbs/ /web/forum/
https://blog.whsir.com/bbs/a.jpg
location /bbs/ {
alias /web/forum/;
}
/web/forum/a.jpg
location /bbs/ {
root /web/forum/;
}
/web/forum/bbs/a.jpg
注意:
root指令:给定的路径对应于location中的/uri/左侧的/;
alias指令:给定的路径对应于location中的/uri/右侧的/;
4、index file ...
设置默认主页;
可用位置:http, server, location
5、error_page code ... [=[response]] uri
根据用户请求的资源的http响应的状态码实现错误页重定向;
https://blog.whsir.com/hello.html --> 访问hello.html如果资源不存在而被改(重定向)为 https://blog.whsir.com/404.html
error_page 404 /404.html 这个404是在网站根下的404.html页面
error_page 404 =200 /404.html 定义返回的状态码200(让用户以为这就是它所需要访问的资源,最好不要修改返回状态码)
定义客户端请求的相关配置:
1、keepalive_timeout timeout [header_timeout]
设定保持连接的超时时长,0表示禁止长连接 ;默认为75s;
2、keepalive_requests number
在一次长连接上所允许请求的资源的最大数量,默认为100;
3、keepalive_disable none | browser ...
对哪种浏览器禁用长连接,none表示没有,哪一种都不禁用;
4、send_timeout time
向客户端发送响应报文的超时时长; 特别地,是指两次写操作之间的间隔时长;
5、client_body_buffer_size size
用于接收客户端请求报文的body部分的缓冲区大小;默认为16k;超时此大小时,其将被暂存到磁盘上;
6、client_body_temp_path path [level1 [level2 [level3]]]
设定用于存储客户端请求报文的body部分的临时存储路径及子目录结构和数量;
对客户的请求进行限制的相关配置:
1、limit_rate rate
限制响应给客户端的传输速率,单位是bytes/second(字节/秒),默认0表示无限制;rate 20480表示20kb/秒;
2、limit_except method ... { ... }
限制对指定的请求方法之外的其它方法的使用客户端;
limit_except GET POST {
allow 172.19.0.0/16;
deny all;
}
表示除了GET和POST之外的其它方法仅允许172.19.0.0/16中的主机使用;
文件操作优化的配置(并不是特别关键):
1、aio on | off | threads[=pool]
是否启用异步传输功能;指定异步传输时线程池的大小;默认aio关闭状态,可用在http,server,location;
2、directio size | off
是否启用directio功能;
3、open_file_cache off
open_file_cache max=N [inactive=time]
nginx可以缓存以下三种信息来提升文件访问性能:
(1) 文件的描述符、文件大小和最近一次的修改时间;
(2) 打开的目录的结构;
(3) 没有找到的文件或者没有权限访问的文件的相关信息;
max=N:可缓存的缓存项上限;达到上限后会使用LRU算法实现缓存管理;
inactive=time:缓存项的超时时长,在此处指定的时长内未被命中的缓存项即为非活动项;
4、open_file_cache_errors on | off
是否缓存查找时发生错误的文件一类的信息;
5、open_file_cache_min_uses number
在open_file_cache指令的inactive参数指定的时长内,至少命中此处指定的次数方可不被归类到非活动项;
6、open_file_cache_valid time
缓存项有效性的检查频率;默认是60s;