首页 » Linux » CentOS » Nginx安装及配置

Nginx安装及配置

 

在这里我们直接通过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;

 

原文链接:Nginx安装及配置,转载请注明来源!

0