nginx主配置文件的模块介绍
全局块:
全局块是配置文件从开始到 events 块之间的部分,其中指令的作用域是 Nginx 服务器全局。主要指令包括:
user:指定可以运行 Nginx 服务的用户和用户组,只能在全局块配置。例如:user nobody;
表示使用 nobody 用户运行 Nginx 服务。
worker_processes
:指定工作线程数,可以设定具体的进程数,也可使用自动模式(如worker_processes auto;
)。一般设为与 CPU 数量相同或 2 倍于 CPU 数量。
pid
:指定进程 pid 文件存放的路径,例如:pid logs/nginx.pid;
error_log
:指定错误日志的路径和日志级别。此指令可在全局块、http 块、server 块以及 location 块中配置。例如:error_log logs/error.log notice;
表示错误日志存放在logs/error.log
,级别为 notice。
events 块:
涉及的指令主要影响 Nginx 服务器与用户的网络连接,对服务器性能有较大影响,常用指令有:
accept_mutex
:开启时,将对多个 Nginx 进程接收连接进行序列化,防止多个进程对连接的争抢。默认是开启状态,只能在 events 块中进行配置,例如:accept_mutex on;
multi_accept
:如果被禁止(multi_accept off;
),Nginx 一个工作进程只能同时接受一个新连接;否则,一个工作进程可以同时接受所有新连接。若 Nginx 使用 kqueue 连接方法,此指令会被忽略。
use
:指定使用哪种网络 I/O 模型,如use epoll;
。可选择的内容包括 select、poll、kqueue、epoll、rtsig、/dev/poll 以及 eventport 等,但一般操作系统并不支持所有模型。
worker_connections
:设置允许每一个 worker 进程同时开启的最大连接数。例如:worker_connections 1024;
需注意,这个值不能超过系统支持打开的最大文件数和单个进程支持打开的最大文件数。
http 块:
是 Nginx 配置中的重要部分,可包含自己的全局块、多个 server 块,而 server 块中又可进一步包含多个 location 块。http 全局块中可配置的指令包括:
include
:用于包含其他的配置文件,例如:include mime.types;
default_type
:设定默认文件类型,例如:default_type application/octet-stream;
sendfile
:开启高效文件传输模式,例如:sendfile on;
keepalive_timeout
:设置客户端连接保持活动的超时时间,例如:keepalive_timeout 65;
log_format
:自定义日志格式。
access_log
:配置 access_log 日志及存放路径,并可使用上面定义的日志格式。
在 server 块中,常用指令有:
listen
:配置监听端口,例如:listen 80;
server_name
:配置服务名,例如:server_name localhost;
location
:用于匹配网页位置,可进行各种请求处理的配置,例如指定根目录、首页文件等。
在 location 块中,可以进一步细化对特定 URL 路径的处理规则。
worker_processes 1;
工作进程数,设置成服务器内核的2倍(一般不超过8个,超过8个反而会降低性能4个1-2个)
处理进程的过程必然涉及配置文件和展示页面,也就是涉及打开文件的数量
nginx默认打开文件数就是1024
vim /etc/security/limits.conf
进入编辑
soft bproc 65535
能打开的进程最大数的软限制是65535,65535是最大数
hard nproc 65535
soft nofile
进程打开文件数的最大值65535
hrad nofile 65535
能打开的进程最大数的硬限制是65535
这个配置要生效只能重启,这是系统初始化的一个环节。
面试题:
root和alias匹配工作之间的区别
root的匹配模式 拼接
root的工作目录,访问的是uri/102
location /xy102
/opt/test1
/opt/test1/xy102
alias也是指匹配nginx的根目录 路径是绝对路径
location /xy102
alias /opt/test1/xy102/;
alias 只能写在http模块当中的server模块的location模块里面
root可以写在server模块,也可以在http,也可以在location中
alias匹配工作目录,不能够使用重定向功能
总结
全局模块
work_processes 1; 指定进程数
events模块决定了能够处理的连接数
stream 四层代理模块
http模块
转发和处理http请求,设置代理(正向代理,反向代理),缓存,定义日志格式,重定向配置。
在http模块当中,包含:
server模块 http里面可以有多个server模块
在server模块当中包含:
location模块
在server模块当中可以有多个location模块
实验
统计访问状态
vim nginx.conf
location /status {
stub_status on;
打开状态统计的功能;
access_log off;
关闭status的访问日志
}
然后nginx -t 查看一下语法是否有误
没有问题就重启nginx
访问页面得出结果
Active connections:1
当前活动的连接数
server accepts handled requests
已经处理的连接数
36 36 36
三个数字从左往右:已经处理的连接次数,成功建立的连接次数 ,已经处理的请求数
Reading:0 writing:1 waiting:0
reading :标识服务端正在从客户端请求读取请求的数据
writing :表示服务端正在把响应数据发送给客户端
waiting:表示有连接处于空闲状态,等待新的请求
基于密码的授权进行访问控制
yum -y install httpd-tools httppasswd的工具,要先安装
htpasswd -c /usr/local/nginx/passwd.db bmm
创建一个文件
进入nginx主配置文件里面
重启
基于客户端的访问控制 ip地址来进行控制
添加一个控制规格
deny 192.168.124.10
allow all
20的主机不能访问
其他的主机可以访问。
基于域名的nginx主机
然后把ip地址和域名做一个映射
进入 /etc/hosts编辑
访问www.xy102.com就相当于访问192.168.124.10
多个域名的访问
进入nginx主配置文件中在后面添加一个server模块
基于ip地址的访问
先创建一个虚拟网卡
然后进入nginx主配置文件中更改监听ip地址
检测语法错误然后重启
基于端口实现多个虚拟主机
端口可以任意设置,但不能超过65535
多个配置文件
进入nginx主配置文件
在http模块中添加
然后创建一个conf.d这个目录,切换到这个目录中,编辑一个test1.conf
然后创建这个两个目录
往两个目录中index.html写入内容
查看这个目录连接的端口