作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。
我们上一大章介绍了Kubernetes的知识,本章节我们进入中间件的讲解,这里会包含很多不同的类型组件,中间件的第一个大类我这里定义的是Web服务器。由于目前使用最广泛的Web服务器是Nginx,所以我们这里的讲解主要以Nginx服务器为主。
Nginx(发音为“engine X”)是一款高性能、开源的 Web 服务器 和 反向代理服务器,同时支持负载均衡、HTTP 缓存、邮件代理(IMAP/POP3)等功能。它由俄罗斯开发者 Igor Sysoev 于 2004 年首次发布,现已成为全球最受欢迎的服务器软件之一,尤其擅长处理高并发连接和优化资源使用。
核心功能与优势
高性能与高并发:基于事件驱动(Event-Driven) 和 异步非阻塞架构,能够高效处理数万甚至数十万的并发连接,消耗的内存和 CPU 资源极低。对比传统多线程服务器(如 Apache),Nginx 在相同硬件条件下能支持更多用户同时访问。
反向代理与负载均衡:作为反向代理服务器,Nginx 可以将客户端请求转发到后端多个服务器(如 Tomcat、Node.js 等),隐藏真实服务器信息,提升安全性。
支持多种负载均衡算法:轮询(Round Robin)、加权轮询、IP 哈希(IP Hash)、最小连接数(Least Connections)等。
静态资源托管:高效处理静态文件(HTML、CSS、JS、图片等),响应速度快,适合作为 CDN 的边缘节点。
SSL/TLS 终端:支持 HTTPS,可配置 SSL 证书,终止加密连接后转发明文请求到后端服务器,减轻后端服务器的加密负担。
缓存加速:通过缓存静态内容或动态内容的代理缓存,减少后端服务器的压力,加速用户访问。
灵活的配置:配置文件简洁直观,支持条件判断、正则表达式匹配、自定义日志格式等功能。
核心架构特点
模块化设计:核心功能通过模块实现,例如:http模块:处理 HTTP 请求。stream模块:支持 TCP/UDP 代理(如数据库负载均衡)。mail模块:邮件代理。
低资源消耗:单 worker 进程处理多连接,避免频繁的进程/线程切换。
支持热更新:升级或修改配置时无需重启服务。
安装
1.yum安装
由于我们我们这一版教程都是Centos为服务器操作系统,所以这里还是以他为范例。由于Nginx在默认的yum源里面没有,所以我们需要先安装扩展源。
#安装扩展源
yum -y install epel-release
#这里安装的版本1.20.2,最新的稳定版本是1.26.3
yum -y install nginx
systemctl start nginx
systemctl enable nginx
#配置文件目录
/etc/nginx
#日志目录
/var/log/nginx
#默认静态网站目录
/usr/share/nginx/html
#nginx命令路径,默认就在path目录,可以直接使用命令
/usr/sbin/nginx
#除了命令其他路径都可以根据需要进行调整。
2.Docker安装
我们前面讲解Docker和Kubernetes的时候实际已经使用过多次Nginx的镜像,所以这里我们只讲解如何使用Nginx镜像。Docker的安装可以参考我的历史文章:Docker总结篇。
mkdir -p /data/nginx/{html,conf,log}
#这里需要提前准备nginx的配置,也可以自己从其地方复制过来
#主要考虑路径对的上就行
docker run --rm nginx cat /etc/nginx/nginx.conf > /data/nginx/conf/nginx.conf
docker run -d \
--name my-nginx \
--net=host \
-v /data/nginx/html/:/usr/share/nginx/html/ \
-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /data/nginx/log:/var/log/nginx/ \
nginx:latest
注意:这个地方挂载有一个坑,看看有没有人能发现(涉及到Linux文件系统和联合文件系统)
3.编译安装
虽然我们很少使用这个功能,但是他是我们需要掌握的技能之一,因为随着使用的深入,可能会出现你需要的功能在默认安装的版本里面不支持。
#下载地址
https://nginx.org/en/download.html
wget https://nginx.org/download/nginx-1.26.3.tar.gz
tar xvf nginx-1.26.3.tar.gz
cd nginx-1.26.3
#安装依赖软件
yum install -y gcc make pcre-devel zlib-devel openssl-devel
#配置编译参数
#其实这里的很多参数并不是必须的。
#只是通过这个方式让我们知道有很多配置的参数。
#实际编译我只加了一个路径参数。
./configure \
--prefix=/usr/local/nginx \
--modules-path=/usr/lib64/nginx/modules \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--user=nginx \
--group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module
#编译
make
#编译安装
make install
编译安装的启动属于一次性的,如果需要配置开机启动需要额外准备Nginx的启动文件,可参考我的历史文章:systemd。
运维小路
一个不会开发的运维!一个要学开发的运维!一个学不会开发的运维!欢迎大家骚扰的运维!
关注微信公众号《运维小路》获取更多内容。