Nginx企业级实战:从零搭建到高性能安全架构
本文已收录在Github,关注我,紧跟本系列专栏文章,咱们下篇再续!
- 🚀 魔都架构师 | 全网30W技术追随者
- 🔧 大厂分布式系统/数据中台实战专家
- 🏆 主导交易系统百万级流量调优 & 车联网平台架构
- 🧠 AIGC应用开发先行者 | 区块链落地实践者
- 🌍 以技术驱动创新,我们的征途是改变世界!
- 👉 实战干货:编程严选网
0 目标
1 教你实战
企业级典型Nginx配置场景,覆盖Nginx核心配置模块,基于企业常见业务配置场景:
2 了解中间件架构
- Nginx应用层的安全防护
- 基于Nginx的中间件架构性能优化的问题
- 对sql的注入防攻击
- 对请求的频率控制
- 对请求的访问控制
- 对防爬虫
3 Nginx 性能优化
- http性能压测
- 系统性能优化
- 性能瓶颈分析
- 基于Nginx的性能配置优化
4 贯彻技术原理
- http协议原理
- linux系统原理
1 理论结合实践
1.1 基础篇
1.2 场景实践篇
1.3 深度学习篇
1.4 架构篇
flowchart LR A["常见问题"] B["Nginx中间件性能优化"] C["Nginx与安全"] D["新版本特性"] E["中间件架构设计"] B --- F["如何调适性能参数"] B --- G["性能优化影响因素"] B --- H["操作系统性能优化"] B --- I["Nginx性能优化"] style A fill:#FFF1E6,stroke:#D77A5A,color:#C25B5B style B fill:#FFF1E6,stroke:#D77A5A,color:#C25B5B style C fill:#FFF1E6,stroke:#D77A5A,color:#C25B5B style D fill:#FFF1E6,stroke:#D77A5A,color:#C25B5B style E fill:#FFF1E6,stroke:#D77A5A,color:#C25B5B style F fill:#FFF1E6,stroke:#D77A5A,color:#C25B5B style G fill:#FFF1E6,stroke:#D77A5A,color:#C25B5B style H fill:#FFF1E6,stroke:#D77A5A,color:#C25B5B style I fill:#FFF1E6,stroke:#D77A5A,color:#C25B5B
2 部署环境
2.1 前提
- CPU≥2
- 内存≥256M
- Centos 64位 7.0 以上
确认可连接外网:
ping baidu.com
确认yum可用:
yum -y install yum-utuls
确认关闭iptables规则:
$ systemctl stop firewalld.service $ systemctl disable firewalld.service $ firewall-cmd --state not running
确认停用selinux
2.2 安装和配置
yum -y install gcc gcc-c++ autoconf pcre pcre-devel make automake yum -y install wget httpd-tools vim # 一次初始化 cd /opt; mkdir app download logs work backup
# 验证 yum 源可用 yum list | grep gcc # 确保关闭防火墙规则 iptables -L # 确保关闭 SELinux $ getenforce Disabled $ setenforce 0 setenforce:SELinux is disabled # 安装所需依赖 yum -y install gcc gcc-c++ autoconf pcre pcre-devel makeautomake # 安装依赖包 yum -y install wget httpd-tools vim
3 基础
3.1 Nginx的中间件架构
3.2 简述
开源且高性能、可靠的HTTP中间件、代理服务
3.3 常见的HTTP服务
- HTTPD-Apache
- IIS-微软
- GWS-Google
3.4 为啥选择nginx?
① IO多路复用epoll
多个描述符的I/O操作都能在一个线程内并发交替地顺序完成,这就叫I/O多路复用,“复用”指复用同一个线程。
什么是epoll
IO多路复用的实现方式select、poll、epoll
select缺点
- 能够监视文件描述符的数量存在最大限制
- 线性扫描效率低下
epoll模型
- 每当FD就绪,采用系统的回调函数之间将fd放入,效率更高
- 最大连接无限制
② 轻量级
- 功能模块少
- 代码模块化
③ CPU亲和(affinity)
CPU亲和:把CPU核心和Nginx工作进程绑定方式,把每个worker进程固定在一个 CPU 上执行,减少切换cpu的cache miss,获得更好性能。
④ sendfile
3.5 Nginx快速搭建与基本参数使用
- Mainline version-开发版
- Stable version-稳定版
- Legacy version-历史版本
3.6 使用官方 yum 源配置