Nginx是一个高性能的HTTP和反向代理web服务器,特点是占用内存少,并发能力强。Nginx的静态处理能力很强,但是动态处理能力不足,因此,在企业中常用动静分离技术。动静分离技术其实是采用代理的方式,在server{}段中加入带正则匹配的location来指定匹配项针对网页的动静分离:静态页面交给Nginx处理,动态页面交给PHP-FPM模块或Apache处理。在Nginx的配置中,是通过location配置段配合正则匹配实现静态与动态页面的不同处理方式。
配置文件结构
Nginx主配置文件路径在user/local/nginx/conf/nginx.conf,Docker安装的话路径在etc/nginx/nginx.conf
全局快
配置服务器整体运行的配置指令,包括文件引入、MIME-TYPE 定义、日志自定义、连接超时时间、单链接请求数上限等
event快
影响 Nginx 服务器与用户的网络连接,表示每个 work process 支持的最大连接数为 1024
http块
Nginx服务器配置最频繁的部分:代理、缓存和日志定义等绝大多数功能和第三方模块的配置。每个 http 块可以包括多个 server 块,而每个 server 块就相当于一个虚拟主机,每个 server 块也分为全局 server 块,以及可以同时包含多个 locaton 块。
#http快
http {
#server块
server{
#全局server块:配置本虚拟机主机的监听配置和本虚拟主机的名称或IP配置
listen 80;
charset utf-8;
server_name 192.168.17.102;
#location快:指定不同的后缀名实现不同的请求转发
location / {
#代理地址
proxy_pass http://192.168.17.102:8080;
}
}
常用命令
描述 | |
---|---|
systemd | 保存,重新加载 |
systemctl daemon-reload | 保存,重新加载 |
systemctl enable nginx.service | 设置nginx服务开机自启动 |
systemctl start nginx.service | 启动nginx服务 |
systemctl stop nginx.service | 停止nginx服务 |
systemctl restart nginx.service | 重启nginx服务e |
systemctl reload nginx.service | 重新读取nginx配置(这个最常用, 不用停止nginx服务就能使修改的配置生效) |
/usr/local/nginx/sbin/nginx | 路径启动,默认在 |
/usr/local/nginx/sbin/nginx -s reload | 平滑重启 |
/usr/local/nginx/sbin/nginx -s stop | 停止 |
/usr/local/nginx/sbin/nginx -s restart | 重启 |
Nginx原理:master&worker
worker如何是工作的?
worker争抢式得到任务,然后通过反向代理连接Tomcat一个master和多个worker有什么好处?
每个woker进都是独立的进程,如果有其中的一个worker中断,其他worker会继续争抢,不会造成服务的终端,worker数和服务器的cput数相等是最为适宜的。
可以使用nginx -s reload热部署,理由nginx进行热部署操作。
Nginx同redis类似,都采用了io多路复用机制,每个worker都是独立的进程,但都有一个主线程,通过异步非阻塞的方式来处理请求,即使成千上万个请求也不在话下。
连接数 worker_connection
当Nginx只访问静态资源时,只需要和worker进行1次交互,这种情况下的连接数为2个。当Nginx需要查询数据库时,还需要和Tomcat进行1次交互,这种情况下的连接数为4个。worker支持的最大并发数是什么?
worker的连接数是2个时,最大并发数:(worker_connection * worker_processes) /2
;worker的连接数是4个时,最大并发数:(worker_connection * worker_processes) /4