Nginx学习笔记
一、 什么是Nginx
Nginx 是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器
二、 Nginx的优缺点
2.1 优点:
1. 占内存小,可实现高并发连接,处理响应快
2. 可实现http服务器、虚拟主机、方向代理、负载均衡
3. Nginx配置简单
4. 可以不暴露正式的服务器IP地址
2.2 缺点:
动态处理差:nginx处理静态文件好,耗费内存少,但是处理动态页面则很鸡肋,现在一般前端用nginx作为反向代理抗住压力
三、 Nginx常用命令
nginx -s stop #快速关闭Nginx,可能不保存相关信息,并迅速终止web服务。
nginx -s quit #平稳关闭Nginx,保存相关信息,有安排的结束web服务。
nginx -s reload #重新载入配置文件
nginx -s reopen #重启Nginx
nginx -c filename #为 Nginx 指定一个配置文件,来代替缺省的。
nginx -t #不运行,而仅仅测试配置文件。nginx 将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的文件。
nginx -v #显示 nginx 的版本。
四、 什么是正向代理和反向代理?
4.1 正向代理
是一个人发送一个请求直接就到达了目标的服务器
4.2 反向代理(Reverse Proxy)方式
是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
五、 使用Docker安装部署Nginx
5.1 拉取nginx镜像
docker pull nginx
5.2 查看镜像是否已经安装成功
docker images
5.3 运行镜像
docker run -p 8080:80 --name nginx -d nginx
5.4 查看镜像是否运行成功
docker ps -a
也可以通过Portainer可视化管理Containers
5.5 使用本地浏览器查看运行访问
这里显示离线部署了菜鸟全站的运行效果,分配端口为8002
六、 使用Docker-compose部署Nginx
6.1 在本地新建Nginx及子文件夹
mkdir conf
mkdir www
mkdir html
mkdir logs
6.2 复制容器中的文件(前提容器正在运行,未被关闭)
docker cp nginx:/etc/nginx/my.conf /home/docker/nginx/conf/
docker cp nginx:/etc/nginx/conf.d /home/docker/nginx/conf/
6.3 配置docker-compose文件
vim docker-compose.yml
version: '3.0'
services:
nginx:
restart: always #开机自动启动
image: nginx #镜像名称
ports: #端口号绑定
- 8080:80
- 80:80
- 443:443
volumes: #目录映射(宿主机:容器内)
- /home/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
- /home/docker/nginx/conf/conf.d:/etc/nginx/conf.d
- /home/docker/nginx/html:/usr/share/nginx/html
6.4 使用docker-compose构建镜像并运行
首先停止nginx容器运行
docker kill nginx
使用docker-compose启动
docker-compose up -d
6.5 查看是否运行成功
docker-compose ps
停止运行使用
docker-compose stop nginx
删除容器使用
docker-compose rm nginx
停止容器和容器网络
docker-compose down
七、 Nginx负载均衡的两种策略
- 为了避免服务器崩溃,大家会通过负载均衡的方式来分担服务器压力。将对台服务器组成一个集群,当用户访问时,先访问到一个转发服务器,再由转发服务器将访问分发到压力更小的服务器。
- Nginx负载均衡实现的策略有以下几种:
7.1 热备
如果你有2台服务器,当一台服务器发生事故时,才启用第二台服务器给提供服务。服务器处理请求的顺序:AAAAAA突然A挂啦,BBBBBBBBBBBBBB…
upstream mysvr {
server 127.0.0.1:7878;
server 192.168.10.121:3333 backup; #热备
}
7.2 轮询
nginx默认就是轮询其权重都默认为1,服务器处理请求的顺序:ABABABABAB…
upstream mysvr {
server 127.0.0.1:7878;
server 192.168.10.121:3333;
}
7.3 加权轮询
跟据配置的权重的大小而分发给不同服务器不同数量的请求。如果不设置,则默认为1。下面服务器的请求顺序为:ABBABBABBABBABB…
upstream mysvr {
server 127.0.0.1:7878 weight=1;
server 192.168.10.121:3333 weight=2;
}
7.4 ip_hash
nginx会让相同的客户端ip请求相同的服务器。
upstream mysvr {
server 127.0.0.1:7878;
server 192.168.10.121:3333;
ip_hash;
}
.1:7878 weight=1;
server 192.168.10.121:3333 weight=2;
}
7.4 ip_hash
nginx会让相同的客户端ip请求相同的服务器。
upstream mysvr {
server 127.0.0.1:7878;
server 192.168.10.121:3333;
ip_hash;
}