最基础的配置模板:
3.1构造分析
1.全局块
- 全局块一般是从文件开头到events块之间的区域,用来设置一些影响Nginx服务器整体运行的配置指令;
- 全局块配置的指令作用域是Nginx服务器全局;
2.events块
-
主要配置内容(Nginx服务器与用户的网络连接)
- 设置是否开启多worker process下的网络连接序列化
- 是否允许同时接收多个网络连接
- 选取哪种驱动模型处理连接
- 每个worker process 可同时支持的最大连接数等
3.http块
代理、缓存、日志定义等绝大多数功能及第三方模块配置的模块;
4.server块
4.1 server功能
server块位于http块之中,每个server块可当成是一个虚拟主机,使得我们只需运行一组nginx就可以访问多个网站。
4.2 虚拟主机
- 从用户角度看,一台虚拟主机就是一台独立硬件主机,并且一台虚拟主机能够服务多个用户,也就是一台虚拟主机起到了多台硬件主机的功能;
- 功能上能够将一项或多项服务功能提供给多个单位(即实现了一台虚拟主机服务多个单位)
4.3 server全局域
常用配置:本虚拟机监听端口、名称/IP配置
5.location块
每个server可以有多个location,Nginx灵活性的重要体现。
主要作用
- 基于Nginx接收到的请求字符串进行匹配、处理(定向、数据缓存、应答控制等),许多第三方模块功能也是在location中实现。
3.2主要配置选择
-
server_name匹配规则
完整匹配 完整的网站 www.xxx.com
通配符前置匹配 : *.mmban.com
通配符结束匹配 : www.bbb.*
正则匹配
- 反向代理配置
- 负载均衡配置
- 轮询权重相关配置
- 动静分离配置
- URL Rewrite 配置
- 防盗链 配置
> - curl测试
>
> 安装指令: `yum install -y curl`
>
3.3其余配置
[] :表示可选项
| :表示 或者
注意配置语法后面都要加 ;
1.配置Nginx服务器用户组
- 说明:只有被设定的用户才有权限启动Nginx,其他用户尝试启动会报错。
- 语法:
user xx [group];
- xx:要设置的用户
- group:可选项,指定的用户组
取消该设置:
user nobody nobody
/ 命令加上 # 注解掉
- 配置区域:全局
2.配置允许生成的worker process 数
- 说明:实现并发处理服务的关键:值越大,支持并发处理量越多,但受限于软件本身、操作系统本身资源等;
- 语法:
worker_process number |auto;
- number:最多可产生的worker process (默认值为1)
- auto:设置此值,Nginx进程会自动检测
- 配置区域:全局
3. 配置进程PID存放路径
- 说明:保存当前运行程序的主进程号
- 语法:
pid file;
file:指定存放路径及文件夹(可以是绝对路径/相对路径,若是文件夹不存在会报错)
eg:
pid sbin/web_nginx
(默认路径是Nginx安装目录logs下的nginx.pid)此时的相对路径是安装目录sbin,即将其放到 安装目录sbin下,文件名为 web_nginx
- 配置区域:全局
4. 配置错误日志存放路径
- 说明:nginx服务器的日志支持输出到某一固定file或是输出到标准错误输出stderr,日志的级别是可选的,从低到高(debug—> emerg),高级别的日志包含了低级别日志的内容。
- 语法:
error_log file | stderr [debug|info|notice|warn|error|crit|alert|emerg];
nginx默认日志存放及级别:
error_log logs/error.log error
- 配置区域:全局、http、server、location
5.配置文件引入
- 说明:将其他Nginx配置/第三方模块的配置引入到当前的主配置文件中
- 语法:
include file;
file:引入的文件,支持相对路径
- 配置区域:任意
6.设置网络连接的序列化
-
说明:防止一个网络连接唤醒多个nginx进程,但最终只有一个进程有用
-
语法:
accept_mutex on|off;
默认是 on(开启)状态
-
配置区域:events
7.设置是否允许同时接收多个网络连接
-
语法:
multi_accept on|off;
默认为 off(关闭):每个worker process 一次只能接收一个网络连接
-
配置区域:events
8.事件驱动型选择
语法:use method;
可选内容:select、poll、kqueue、epoll、rtsig、/dev/poll 以及 eventport
9.配置最大连接数
-
说明:配置每个worker process允许开启的最大连接数
-
语法:
worker_connection number;
number:默认值为512(不仅是包括和前端用户建立的连接数,还包括所有可能的连接,不能大于操作系统支持打开的最大文件句柄数量)
-
配置区域:events
10.配置连接超时时间
-
说明:用户建立会话连接后的保持时间
-
语法:
keepalive_timeout xxx[header_timeout];
xxx:保持时间
head_timeout:可选项,在应答报文头部的Keep-Alive域设置超时时间:“Keep-Alive:timeout=header_timeout”。报文中的这个指令可以被Mozilla或Konqueror识别。
eg:keepalive_timeout 120s 100s; 【在服务端保持连接时间为120s,发给用户的应答报文头部中Keep-Alive域的超时时间为100s】
-
配置区域:http、server、location
11.单连接请求数上限
- 说明:限制用户通过某一连接向Nginx发送请求的次数,默认是100
- 语法:
keepalive_requests number;
- 配置区域:server、location
-
语法:
listen port [default_server] [setfib=number] [backlog=number] [rcvbuf=size] [sndbuf=size][accept_filter=filter][deferred] [bind][ssl]
default_server:标识符,将此虚拟机设置为address:port的默认主机
setfib=number:监听socket关联路由表(不常用)
backlog=number (设置监听函数listen()最多允许多少个网络连接同时处于挂起状态,FreeBSD中默认为-1,其余平台默认为511)
rcvbuf=size:设置监听socket接收缓存区大小
sndbuf=size:设置监听socket发送缓存区大小
deferred:标识符,将accept()设置为Default模式
accept_filter=filter:设置监听端口对请求的过滤
bind:标识符,使用独立的bind()处理此address:port;
ssl:标识符,设置会话连接使用SSL模式,与Nginx提供的HTTPS服务有关
eg:
listen 192.168.1.10 default_server backlog=1024
:设置192.168.1.10的请求默认由虚拟主机处理,并最多允许1024网络连接同时处于挂起状态。
13.配置虚拟主机名称
-
语法:
server_name ...
可使用通配符、正则表达式等
可配多个名称,用空格隔开
14.配置请求的根目录
- 说明:Web接收到网络请求后,首先在服务器根目录中寻找资源
- 语法:
root path;
eg:root /locations
15.更改location的URI
- 说明:将Web传来的URI改为指定URI去寻找资源
- 语法:
alias path;
16.设置网站默认首页
- 语法:
index xxx
eg:index index.html index.$1.html
(这里的 $1为预变量locations)
17.设置错误页面
-
语法:
error_page code [=[response]] uri
eg:error_page 404 /404.html
code:需要处理的HTTP错误码
response:可选项,将code错误码改为response错误码
uri:错误页面的路径
18.基于IP配置Nginx访问权限
-
说明:Nginx通过两种途径控制基本访问权限:其中一种是HTTP标准模块ngx_http_access_module支持,其通过IP来判断客户端是否拥有对Nginx的访问权限
-
语法
-
allow指令:
allow address | CIDR | all;
【设置允许访问Nginx的客户端IP】address:允许访问的客户IP,一条设置只能配一个IP
CIDR:允许访问客户端的CIDR地址
all:表示允许所有客户端访问
-
deny指令:
deny address |CIDR | all
【设置禁止访问的客户端IP】
-
-
配置模块:http、server、location
19.基于密码配置Nginx访问权限
-
说明:一种基于HTTP Basic Authentication协议的认证,是一种HTTP性质的认证方法,需要识别用户名和密码,由HTTP标准模块ngx_http_auth_basic_module支持
-
语法
-
auth_basic指令:
auth_basic string |off
【用于开启或关闭】string:开启认证功能,并配置验证时的指示信息
off:关闭认证功能
-
auth_basic_file指令:
auth_basic_user_file file
【用于设置用户名和密码信息的文件路径】file:密码文件的绝对路径,支持明文或加密后的文件
-