nginx 介绍

​ nginx 是一款使用 C 语言编写的高性能的代理服务器。优点是占用内存小,并发能力强。达到了 5W。一般用来做负载均衡

1. 官网下载 nginx 压缩包

我们先去官网下载一个最新稳定版的 nginx

http://nginx.org/en/download.html

img点击并拖拽以移动

然后使用 xftp 或者 rz 上传到我们的服务器

# 解压压缩包

tar -zxvf nginx-1.22.0.tar.gz

然后进入到目录里面,查看是否有可执行权限 (是不是绿色的),没有赋予执行权限

# 赋予执行权限

chmod +x configure

img点击并拖拽以移动

2. 安装 nginx 所需要的环境

在安装之前先安装 nginx 所需要的一些环境

1
2
3
4
5
6
7
8
# c编译器
yum -y install gcc gcc-c++ autoconf automake make
# 解析正则的pcre库
yum install -y pcre pcre-devel
# 添加对gzip的支持
yum install -y zlib zlib-devel
# SSL
yum -y install pcre pcre-devel zlib zlib-devel openssl openssl-devel

点击并拖拽以移动

3. 开始安装

准备安装 这里强烈建议安装stream模块,stream是用来处理tcp转发的。不然后面想用没有会很麻烦!!! 如果真的用不到stream可以不输入--with-stream

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 开始安装
./configure --with-stream

# 安装完成之后编译
make

# 安装编译后的文件
make install

# 安装nginx源
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

# 安装常用软件源
yum -y install epel-release
# 安装modules模块
yum -y install nginx-all-modules.noarch

默认安装在 /usr/local/nginx 里。

进入 sbin 文件夹中 执行./nginx 启动 nginx。

至此 nginx 的安装就结束了,浏览器输入 IP: 端口号查看是否可以进入 nginx 主界面,进入则成功。

注意 nginx 默认端口号是 80. 需要提前去阿里云安全组中开放端口。同时把本机的防火墙关闭。

# 关闭防火墙

systemctl stop firewalld

如果想要修改端口号可以去 conf 下的 nginx.conf 中修改,修改完成后去 sbin 文件夹中执行./nginx -s reload**** 重启 nginx

img点击并拖拽以移动

4. 基础命令

以下命令必须去 sbin 下执行

# 查看 nginx 语法是否正确

./nginx -t

# 启动 nginx

./nginx

# 刷新配置文件

./nginx -s reload

# 查看版本 任意地方可执行

nginx -V

# 正常关闭

./nginx -s quit

# 强制关闭

./nginx -s stop

# 查看 nginx 进程

ps aux|grep nginx

5. 负载均衡

首先说一下什么是负载均衡。负载均衡就是将所有的请求给分发到不同的服务器。可以减少服务器压力。同时隐藏了真实服务器的 ip。具体的说就是对外暴露出一个端口。nginx 来代理监听这个端口。然后使用负载均衡配置的服务来进行对应的转发操作。下面来看一些简单的例子。

img

点击并拖拽以移动

这是一个最基本的负载均衡配置。test 是负载均衡的名字。

负载均衡配置全部写在 nginx.conf 的 http 模块中

img点击并拖拽以移动

上面配置的效果是我们访问 7788 这个端口号。nginx 会将请求按照默认的轮询方式分配到 80 和 9101 端口上。进行一个转发跳转。

我们访问 7788 端口,第一次成功进入 nginx 的主页面。

img点击并拖拽以移动第二次访问 7788 端口,访问到 docker 可视化页面,端口号为 9101,同样成功。

img点击并拖拽以移动以上就是一个简单的负载均衡的例子。下面来说说负载均衡的模式

6. 负载均衡三大模式

1. 轮询

负载均衡默认使用的就是轮询。将请求按照顺序分配到服务上。

img点击并拖拽以移动

2. 权重

通过 weight 指定权重值。比如下图有 5 个请求进来。有 4 个会被分配到 9101 上

img点击并拖拽以移动

3.IP 散列

通过对访问的 IP 的 hash 结果来决定转发到哪个服务上。固定 IP 会固定被转发到对应的服务上

img点击并拖拽以移动

7. 踩坑点

自己一个人摸爬滚打才出来的坑,希望大家可以少踩一点坑

1
2
3
1. nginx绝对不可以使用tab当空格使用
2. 在nginx.conf中配置的东西不要和conf.d中重合
3. 有一些编码冲突可以设置文件编码为utf-8 在vim中输入 :set fileencoding=utf-8

点击并拖拽以移动