Nginx 是一款轻量级的 Web 服务器、反向代理服务器,由于它的内存占用少,启动极快,高并发能力强,在互联网项目中广泛应用。

安装环境

  • Centos 7.9
  • Nginx 1.20.1

安装方式

Nginx 的安装不推荐使用 docker 安装。同时不推荐直接 yum install nginx,因为直接安装的话 Nginx 的版本会比较低。

所以建议安装官方最新文档版本。首先需要添加官方的仓库源。

创建文件并编辑 /etc/yum.repos.d/nginx.repo。添加以下内容:

1
2
3
4
5
[nginx]
name=nginx repo
baseurl=https://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

添加完成后,保存并执行 yum install -y nginx 即可完成安装。安装完成后可以使用 nginx -v 检查版本。

1
2
3
4
5
6
7
8
# 安装 Nginx
yum install -y nginx

# 查看版本
nginx -v

# 版本输出信息
nginx version: nginx/1.20.1

nginx 常用命令如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 允许 nginx 开机启动
systemctl enable nginx

# 取消 nginx 开机启动
systemctl disable nginx

# 开启 nginx
systemctl start nginx

# 关闭 nginx
systemctl stop nginx

# 重启 nginx
systemctl restart nginx

# 重新加载 nginx 配置
systemctl reload nginx

Stream 安装

自从 nginx 1.9 以后 nginx 通过 stream 模块实现了 tcp 代理功能,无需其他软件配合即可实现四层代理和七层代理,即:访问该服务器的指定端口,nginx 就可以充当端口转发的作用将流量导向另一个服务器,同时获取目标服务器的返回数据并返回给请求者。这是一个非常实用的功能。

安装了 nginx 之后,stream 是默认开启的。或者你可以使用下面的命令查看。

1
2
# 查看 nginx 编译配置信息(V 大写)
nginx -V

输出信息中带有 --with-stream参数即可代理 TCP 协议。但其实缺失了 stream 模块,还需要额外安装。

1
2
# 安装 stream 模块
yum install nginx-mod-stream

安装完成后即可。

Stream 配置

请注意,stream 块和 http 块是两个不同的模块,stream 不属于 http 模块,即不能放到/etc/nginx/conf.d/,stream 是通过 tcp 层转发,而不是 http 转发。

如配置在 http 内,启动 nginx 会报如下错误:

1
nginx: [emerg] "server" directive is not allowed here

添加 stream 目录

1
2
3
4
5
6
7
8
9
vim /etc/nginx/nginx.conf

# 最后追加如下内容

# stream config.
stream {
# tcp/ip proxy
include /etc/nginx/tcp.d/*.conf;
}

tcp 转发配置

1
2
3
# 创建 tcp 转发配置目录
mkdir /etc/nginx/tcp.d
cd /etc/nginx/tcp.d

tcp.d 目录下创建一个 mysql.conf 配置文件。用来代理 mysql。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
upstream mysql-server {
# localhost 可修改为对应的 IP 地址
# 3306 可修改为对应的数据库端口
# weight 权重
server localhost:3306 weight=1 max_fails=3 fail_timeout=30s;
}

server {
# 监听的端口
listen 13306;
proxy_connect_timeout 5s;
proxy_timeout 30s;
proxy_pass mysql-server;
}

重启 nginx

1
2
# 重启命令
systemctl restart nginx

重启之后连接 MySQL 测试即可。