一文搞懂Nginx
一文搞懂Nginx
戈亓偶然看到几个Nginx视频,感觉讲的还可以,基础入门的话足够,特此整理下笔记,附上视频链接 B站GeekHour
一、Nginx 简介
目前最流行的web服务器
俄罗斯程序员Igor Sysoev开发,为了解决并发连接问题。
二、Nginx安装及基础操作
2.1安装
方式一、包管理器
Linux:
1 | sudo apt update |
nginx的常见安装位置:
- /etc/nginx ubuntu系统
- /usr/local/etc/nginx
- /opt/homebrew/etc/nginx
Moc:
1 | brew install nginx |
Windows:
1 | scoop install nginx |
方式二、编译安装
方式三、Docker
1 | docker pull nginx |
可先搜所相关镜像,挂载时建议将 nginx.conf 等配置文件同步在宿主机上,便于修改。
示例:
- 在宿主机上创建 /data/nginx 目录用来挂载nginx数据,在该目录下创建其他三个路径,如下:
1
2
3 mkdir www # 挂载web文件
mkdir logs # 挂载日志文件
mkdir conf # 挂载配置文件
- 将nginx的配置文件cp到宿主机
1 docker cp ID:/etc/nginx/nginx.conf /data/nginx/conf记得修改nginx.conf的权限
- 删除之前的容器,并进行数据挂载
1
2
3
4 docker run -d --name nginx -p 9090:80
-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
-v /data/nginx/www/:/usr/share/nginx/html
-v /data/nginx/logs:/var/log/nginx nginx
由于笔者对于nginx的使用场景,基本都在于项目部署,因此基本操作都在Linux环境下,后续的举例在Linux中的操作。
2.2 服务启动/停止
启动
- linux环境下启动nginx,只需要在终端中输入nginx即可启动,无提示即为启动成功。
1 | nginx |
Nginx 的进程模型
主要有两类进程
master 主进程 只有一个 主要负责读取和验证配置文件
worker 进程可以有很多个,负责处理实际的请求。
- 也可以通过查看nginx进程没判断是否启动成功
1 | ps -ef|grep nginx |
- 通过查看端口
1 | lsof -i:80 |
通过PID判断进程是否为nginx的进程。
停止
1 | nginx -s |
三、Nginx 配置文件
nginx配置文件为 nginx.conf,在nginx安装目录下。
可以通过 Vim 编辑器来修改内容。
- 检查配置文件有无错误
1 | nginx -t # 检查配置文件 |
每次更改配置文件之后都需要重新启动
配置文件结构
全局块
全局块是配置⽂件的第⼀个块,也是配置⽂件的主体部分,主要⽤来设置⼀些影响Nginx服务 器整体运⾏的配置指令,主要包括配置运⾏Nginx服务器的⽤户(组)、允许⽣成的worker process数、进程PID存放路径、⽇志存放路径和类型以及配置⽂件引⼊等。
全局块包括 使用者、工作进程数量(work_processes)等
work_processes 工作进程
一般work_processes数量与CPU内核数量相同,也可以修改为auto这压根
events 块
网络连接的一些配置,比如每个work进程可以接收多少网络连接、网络IO模型等。
http块
修改最频繁的情况,虚拟主机、反向代理、负载均衡等都在此处配置。包含若干个server块。