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

docker nginx和项目分开还是放在同一容器 docker和nginx部署优缺点_学习

5.4 查看镜像是否运行成功
docker ps -a

也可以通过Portainer可视化管理Containers

5.5 使用本地浏览器查看运行访问

这里显示离线部署了菜鸟全站的运行效果,分配端口为8002

docker nginx和项目分开还是放在同一容器 docker和nginx部署优缺点_nginx_02

六、 使用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

docker nginx和项目分开还是放在同一容器 docker和nginx部署优缺点_学习_03

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;
}