跳到主要内容
企业级 Nginx 高性能部署与优化实战 | 极客日志
Shell / Bash
企业级 Nginx 高性能部署与优化实战 企业级 Nginx 服务器的部署与优化方案。内容包括源码编译安装、平滑升级回滚机制、配置文件优化(Worker 进程、CPU 绑定)、Location 匹配规则详解、用户认证、错误页面与日志管理、下载服务与限速、文件检测、状态监控、压缩功能、变量使用、URL 重写、HTTPS 加密、防盗链、反向代理、动静分离、缓存加速、七层与四层负载均衡、PHP 整合及 OpenResty 编译安装等核心知识点。
雾岛听风 发布于 2026/3/23 更新于 2026/5/5 27K 浏览一、Nginx 源码编译
1. 官网下载稳定版并解压
2. 检测安装环境,安装必要的依赖
3. 根据自身需求安装模块并编译 Nginx
4. 创建 nginx 用户及启动文件
5. 编写启动文件
首先通过 nginx -s stop 停止服务,否则会显示端口占用。
二、Nginx 平滑升级和回滚
1. 下载高版本 Nginx
2. 编写高版本 Nginx 版本信息配置文件
3. 源码编译并启动
不运行 make install
将 objs 下的 nginx 拷贝到原先的启动文件下
[root@Nginx sbin]# cp -f /root/nginx-1.29.4/objs/nginx /usr/local/nginx/sbin/nginx
查看 Nginx 日志文件夹
结束 Nginx 的 master 进程
再查看日志文件夹及运行版本与之前修改的配置文件内容一致
4. 回收旧版本的子进程
5. 版本回退
重新将旧版本的 Nginx 启动脚本复制至启动文件夹
重新加载旧版本 Nginx 主进程
查看版本信息
三、Nginx 配置文件管理及优化参数
1. 增加用户为 Nginx、worker 进程个数增加
2. 更改核心数量并绑定 CPU
3. 增加 Nginx 并发量
四、构建静态站点
1. location 指令中的 root 参数 include "/usr/local/nginx/conf/conf.d/*.conf";
[root@Nginx ~]# mkdir -p /webdata/nginx/example.com/lee/html
[root@Nginx ~]# echo lee.example.com > /webdata/nginx/example.com/lee/html/index.html
mkdir -p /webdata/nginx/example.com/lee/html/lee
[root@Nginx conf.d]# echo lee > /webdata/nginx/example.com/lee/html/lee/index.html
#lee 标识 location 中的 root 值 + location 后面指定的值代表目录的路径
2. location 中的 alias 参数 echo passwd > /mnt/index.html
五、Keepalived 长连接优化
1. 设定长连接时间
2. 设定长连接次数
六、Location 字符匹配详解 #匹配优先级从高到低:=, ^~, /*, 不带符号
1. 后面不加符号
2. location 后+"="
3. location 后+"^~" 表示由该目录开头,里面可以包含其他目录但必须是根目录下的该目录
4. location 后+"~" 表示访问的文件夹包含该名称由该字母开头的,后面可以跟其他字符,且区分大小写。
5. location 后+"~*" 表示访问文件包含该内容,不区分大小写,只要包含即可被选中。但是同样改文件名前面必须一致。
6. location 后+"\"
七、服务访问的用户认证
1. 非交互建立用户 admin
2. 编辑配置文件启用密码登录功能
3. 建立访问文件 [root@Nginx conf.d]# mkdir -p /usr/local/nginx/html/admin
[root@Nginx conf.d]# echo amdin >/usr/local/nginx/html/admin/index.html
4. 测试
八、自定义错误页面
1. 新建错误页面内容
2. 编辑配置文件
3. 重启后测试 没有新建该访问内容,错误代码为 404 转换到错误页面内容上。
九、自定义错误日志
1. 新建错误日志存放目录 [root@Nginx ~]# mkdir -p /usr/local/nginx/logs/example.org/
2. 修改配置文件内容
3. 重启并测试
十、Nginx 中建立下载服务器
1. 新建普通文件及大文件做测试
2. 编辑配置文件
3. 客户端拉取内容
4. 下载控速
1) 实际下载速度太快影响服务器性能
2) 修改配置文件限制下载速度
3) 测试
5. 显示文件大小优化
6. 时间显示调整
7. 设定页面风格 通过 autoindex_format 参数后面跟不同的页面类型达到设定页面风格的目的
十一、Nginx 的文件检测 try_files 会按顺序检查文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线表示为文件夹),如果所有文件或文件夹都找不到,会进行一个内部重定向到最后一个参数。只有最后一个参数可以引起一个内部重定向,之前的参数只设置内部 URI 的指向。最后一个参数是回退 URI 且必须存在,否则会出现内部 500 错误。
1. 设定测试文件
2. 编辑配置文件
3. 访问测试
十二、Nginx 的状态页
1. 修改配置文件 只能 usr/local/nginx/conf/.htpasswd 文件中的用户才能查看
2. 访问测试
十三、Nginx 的压缩功能
1. 新建测试文件
2. 修改主配置文件
3. 子配置文件中指定路径
4. 访问测试文件测试
十四、Nginx 变量
1. 增加 Nginx 的 echo 模块 删除原先的 nginx 启动文件,完成后将最新的启动文件拷贝到启动文件夹下。
2. 内建变量
3. 测试
4. 内建变量
十五、网页重写
1. 网页重写指令
1) if 指令 = #比较变量和字符串是否相等,相等时 if 指令认为该条件为 true,反之为 false
!= #比较变量和字符串是否不相等,不相等时 if 指令认为条件为 true,反之为 false
~ #区分大小写字符,可以通过正则表达式匹配,满足匹配条件为真,不满足匹配条件为假
!~ #区分大小写字符,判断是否匹配,不满足匹配条件为真,满足匹配条件为假
~* #不区分大小写字符,可以通过正则表达式匹配,满足匹配条件为真,不满足匹配条件为假
!~* #不区分大小字符,判断是否匹配,满足匹配条件为假,不满足匹配条件为真
-f 和 !-f #判断请求的文件是否存在和是否不存在
-d 和 !-d #判断请求的目录是否存在和是否不存在
-x 和 !-x #判断文件是否可执行和是否不可执行
-e 和 !-e #判断请求的文件或目录是否存在和是否不存在 (包括文件,目录,软链接)
注意:
如果$变量的值为空字符串或 0,则 if 指令认为该条件为 false,其他条件为 true。
nginx 1.0.1 之前$变量的值如果以 0 开头的任意字符串会返回 false
2) set 指令
3) return 指令
4) break 值
2、flag
1) 临时重定向 redirect
2) 永久重定向 permanent
3、break 和 last 的区别
1) 新建测试文件
2) break:修改配置文件
3) break:测试 访问 break/index.html 时从写到 text1/index.html,遇到 break 直接中断。
4) last:配置文件修改
5) last 测试 遇到 last 时继续向下读取,重写到 location /test1 字段
十六、Nginx 利用网页重写实现全站加密
1. 制作公私密钥 [root@Nginx ~]# openssl req -newkey rsa:2048 -nodes -sha256 -keyout /usr/local/nginx/certs/example.org.key -x509 -days 365 -out /usr/local/nginx/certs/example.org.crt
2. 编辑加密配置文件
3. 测试
十七、防盗链
1. 新建主机编辑配置文件
2. 修改 nginx 服务器配置文件防止盗链
3. 测试
十八、Nginx 的反向代理
1. 简单的代理 [root@RS2 ~]# mkdir /var/www/html/web
[root@RS2 ~]# echo 172.25.254.20 web > /var/www/html/web/index.html
1) 修改后端服务器日志信息配置 [root@RS1 ~]# vim /etc/httpd/conf/httpd.conf
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" \"%{X-Forwarded-For}i\"" combined
[root@RS1 ~]# systemctl restart httpd
2) Nginx 修改配置文件
3) 访问后查看日志
十九、利用反向代理实现动静分离
1. 实验环境配置
2. 修改配置文件
3. 测试
二十、缓存加速
1. 高并发访问
2. 设定缓存加速
1) 主配置文件修改
2) 子配置文件修改
3. 测试
二十一、反向代理负载均衡
1. 编辑主配置文件
2. 编辑子配置文件 [root@Nginx ~]# mkdir -p /webdir/example.org/error/html
[root@Nginx ~]# echo error > /webdir/example.org/error/html/index.html
[root@Nginx ~]# vim /usr/local/nginx/conf/conf.d/vhosts.conf
server {
listen 8888;
root /webdir/example.org/error/html;
}
3. 测试
二十二、负载均衡算法
二十三、PHP 源码编译
1. 下载安装包
2. 下载依赖
3. 选择模块编译 [root@Nginx ~]# ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-curl --with-iconv --with-mhash --with-zlib --with-openssl --enable-mysqlnd --with-mysqli --with-pdo-mysql --disable-debug --enable-sockets --enable-soap --enable-xml --enable-ftp --enable-gd --enable-exif --enable-mbstring --enable-bcmath --with-fpm-systemd
4. 配置 PHP
1) 指定 pid 文件存放位置
3) 修改时区配置文件 [root@Nginx php-fpm.d]# cp /root/php-8.3.30/php.ini-production /usr/local/php/etc/php.ini
[root@Nginx php-fpm.d]# vim /usr/local/php/etc/php.ini
4) 生成启动文件 [root@Nginx ~]# cp /root/php-8.3.30/sapi/fpm/php-fpm.service /lib/systemd/system/
[root@Nginx ~]# vim /lib/systemd/system/php-fpm.service
将其注释掉这些文件的只读权限,重新加载启动文件后启动 php
5. PHP 设置环境变量 [root@Nginx ~]# vim ~/.bash_profile
export PATH=$PATH :/usr/local/nginx/sbin:/usr/local/php/sbin:/usr/local/php/bin
二十四、Nginx 整合 PHP
1. 准备测试页面
2. 编辑配置文件
3. 测试
二十五、利用 Memcached 实现 PHP 的缓存加速
1. 下载安装 Memcached
2. 配置 Memcached
3. 升级 PHP 对于 Memcached 的支持
1) 下载 memcache-8.2.tgz 插件
2) 修改配置文件使其支持 Memcached
4. 测试性能
二十六、Nginx+Memcached 实现高速缓存
1. 重新编译 Nginx
2. 整合 Memcached 测试:ab -n 10000 -c500 http://php.baobao.org/example.php
二十七、Nginx 的四层负载均衡代理
1. 后端服务器安装 MariaDB 并新建账户
2. DNS 服务
1) 修改主配置文件
2) 修改子配置文件
3) 配置解析记录
4) 测试
3. TCP 四层负载
1) 修改主配置文件
2) 编辑子配置文件
3) 测试
4. UDP 四层负载
1) 修改子配置文件
2) 测试
二十八、OpenResty 编译安装 OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。
[root@Nginx ]# wget https://openresty.org/download/openresty-1.27.1.2.tar.gz
[root@Nginx ~]# dnf -yq install gcc pcre-devel openssl-devel perl zlib-devel
[root@Nginx ~]# useradd -r -s /sbin/nologin nginx
[root@Nginx ~]# tar zxf openresty-1.27.1.2
[root@webserver ~]# cd openresty-1.27.1.2/
[root@Nginx openresty-1.17.8.2]# ./configure \
--prefix=/usr/local/openresty \
--user=nginx --group=nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-pcre --with-stream \
--with-stream_ssl_module \
--with-stream_realip_module
[root@Nginx openresty-1.17.8.2]# gmake && gmake install
[root@webserver openresty]# vim ~/.bash_profile
export PATH=$PATH :/usr/local/openresty/bin
source ~/.bash_profile
相关免费在线工具 Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
Base64 文件转换器 将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
Markdown转HTML 将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
HTML转Markdown 将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
JSON 压缩 通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
JSON美化和格式化 将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online