跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Shell / Bash

企业级 Nginx 高性能部署与优化实战

企业级 Nginx 服务器的部署与优化方案。内容包括源码编译安装、平滑升级回滚机制、配置文件优化(Worker 进程、CPU 绑定)、Location 匹配规则详解、用户认证、错误页面与日志管理、下载服务与限速、文件检测、状态监控、压缩功能、变量使用、URL 重写、HTTPS 加密、防盗链、反向代理、动静分离、缓存加速、七层与四层负载均衡、PHP 整合及 OpenResty 编译安装等核心知识点。

雾岛听风发布于 2026/3/23更新于 2026/6/3027K 浏览
企业级 Nginx 高性能部署与优化实战

一、Nginx 源码编译

1. 官网下载稳定版并解压

2. 检测安装环境,安装必要的依赖

3. 根据自身需求安装模块并编译 Nginx

文章配图

4. 创建 nginx 用户及启动文件

文章配图

文章配图

5. 编写启动文件

文章配图

首先通过 nginx -s stop 停止服务,否则会显示端口占用。

文章配图

二、Nginx 平滑升级和回滚

1. 下载高版本 Nginx

2. 编写高版本 Nginx 版本信息配置文件

文章配图

3. 源码编译并启动

  1. 不运行 make install

  2. 将 objs 下的 nginx 拷贝到原先的启动文件下

[root@Nginx sbin]# cp -f /root/nginx-1.29.4/objs/nginx /usr/local/nginx/sbin/nginx

-f 为强制覆盖。\ 表示绕过可能的别名。

  1. 查看 Nginx 日志文件夹

  2. 结束 Nginx 的 master 进程

文章配图

  1. 再查看日志文件夹及运行版本与之前修改的配置文件内容一致

文章配图

4. 回收旧版本的子进程

文章配图

5. 版本回退

  1. 重新将旧版本的 Nginx 启动脚本复制至启动文件夹

  2. 重新加载旧版本 Nginx 主进程

  3. 查看版本信息

文章配图

三、Nginx 配置文件管理及优化参数

1. 增加用户为 Nginx、worker 进程个数增加

文章配图

文章配图

2. 更改核心数量并绑定 CPU

文章配图

文章配图

3. 增加 Nginx 并发量

文章配图

测试

文章配图

四、构建静态站点

1. location 指令中的 root 参数

用子配置文件的方式编写

  1. 新建子配置文件目录

  2. 编写主配置文件

include "/usr/local/nginx/conf/conf.d/*.conf";
  1. 编写子配置文件并新建测试访问内容
[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 后面指定的值代表目录的路径

  1. 效果测试

文章配图

2. location 中的 alias 参数

  1. 修改子配置文件

文章配图

  1. 测试

建立 /mnt/ 下默认发布文件

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. 新建主机编辑配置文件

图片是从 nginx 服务器上获得的

文章配图

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

文章配图

文章配图

2. proxy_hide_header 参数

隐藏头部信息

文章配图

文章配图

文章配图

3. proxy_pass_header

默认访问不透传 server 信息

文章配图

文章配图

文章配图

4. 透传信息 proxy_set_header

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. 实验环境配置

在 RS1 中下载 php 软件。

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 文件存放位置

文章配图

文章配图

2) 编辑主配置文件 www.conf

设置监听端口

文章配图

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. 准备测试页面

php 页面及静态页面

文章配图

2. 编辑配置文件

文章配图

3. 测试

文章配图

文章配图

二十五、利用 Memcached 实现 PHP 的缓存加速

文章配图

1. 下载安装 Memcached

2. 配置 Memcached

文章配图

文章配图

3. 升级 PHP 对于 Memcached 的支持

1) 下载 memcache-8.2.tgz 插件

下载 configure 脚本工具

文章配图

文章配图

2) 修改配置文件使其支持 Memcached

文章配图

文章配图

文章配图

4. 测试性能

文章配图

文章配图

二十六、Nginx+Memcached 实现高速缓存

文章配图

1. 重新编译 Nginx

增加 Memcached 高速缓存模块

文章配图

2. 整合 Memcached

文章配图

测试:ab -n 10000 -c500 http://php.baobao.org/example.php

二十七、Nginx 的四层负载均衡代理

1. 后端服务器安装 MariaDB 并新建账户

文章配图

2. DNS 服务

1) 修改主配置文件

文章配图

2) 修改子配置文件

文章配图

3) 配置解析记录

文章配图

4) 测试

文章配图

3. TCP 四层负载

1) 修改主配置文件

导入子配置文件位置在 http 字段之外

文章配图

2) 编辑子配置文件

stream 模块

文章配图

3) 测试

另外的客户端测试

文章配图

4. UDP 四层负载

1) 修改子配置文件

仅能有一个 stream 模块文件

文章配图

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

文章配图

目录

  1. 一、Nginx 源码编译
  2. 1. 官网下载稳定版并解压
  3. 2. 检测安装环境,安装必要的依赖
  4. 3. 根据自身需求安装模块并编译 Nginx
  5. 4. 创建 nginx 用户及启动文件
  6. 5. 编写启动文件
  7. 二、Nginx 平滑升级和回滚
  8. 1. 下载高版本 Nginx
  9. 2. 编写高版本 Nginx 版本信息配置文件
  10. 3. 源码编译并启动
  11. 4. 回收旧版本的子进程
  12. 5. 版本回退
  13. 三、Nginx 配置文件管理及优化参数
  14. 1. 增加用户为 Nginx、worker 进程个数增加
  15. 2. 更改核心数量并绑定 CPU
  16. 3. 增加 Nginx 并发量
  17. 四、构建静态站点
  18. 1. location 指令中的 root 参数
  19. 2. location 中的 alias 参数
  20. 五、Keepalived 长连接优化
  21. 1. 设定长连接时间
  22. 2. 设定长连接次数
  23. 六、Location 字符匹配详解
  24. 1. 后面不加符号
  25. 2. location 后+"="
  26. 3. location 后+"^~"
  27. 4. location 后+"~"
  28. 5. location 后+"~*"
  29. 6. location 后+"\\"
  30. 七、服务访问的用户认证
  31. 1. 非交互建立用户 admin
  32. 2. 编辑配置文件启用密码登录功能
  33. 3. 建立访问文件
  34. 4. 测试
  35. 八、自定义错误页面
  36. 1. 新建错误页面内容
  37. 2. 编辑配置文件
  38. 3. 重启后测试
  39. 九、自定义错误日志
  40. 1. 新建错误日志存放目录
  41. 2. 修改配置文件内容
  42. 3. 重启并测试
  43. 十、Nginx 中建立下载服务器
  44. 1. 新建普通文件及大文件做测试
  45. 2. 编辑配置文件
  46. 3. 客户端拉取内容
  47. 4. 下载控速
  48. 1) 实际下载速度太快影响服务器性能
  49. 2) 修改配置文件限制下载速度
  50. 3) 测试
  51. 5. 显示文件大小优化
  52. 6. 时间显示调整
  53. 7. 设定页面风格
  54. 十一、Nginx 的文件检测
  55. 1. 设定测试文件
  56. 2. 编辑配置文件
  57. 3. 访问测试
  58. 十二、Nginx 的状态页
  59. 1. 修改配置文件
  60. 2. 访问测试
  61. 十三、Nginx 的压缩功能
  62. 1. 新建测试文件
  63. 2. 修改主配置文件
  64. 3. 子配置文件中指定路径
  65. 4. 访问测试文件测试
  66. 十四、Nginx 变量
  67. 1. 增加 Nginx 的 echo 模块
  68. 2. 内建变量
  69. 3. 测试
  70. 4. 内建变量
  71. 十五、网页重写
  72. 1. 网页重写指令
  73. 1) if 指令
  74. 2) set 指令
  75. 3) return 指令
  76. 4) break 值
  77. 2、flag
  78. 1) 临时重定向 redirect
  79. 2) 永久重定向 permanent
  80. 3、break 和 last 的区别
  81. 1) 新建测试文件
  82. 2) break:修改配置文件
  83. 3) break:测试
  84. 4) last:配置文件修改
  85. 5) last 测试
  86. 十六、Nginx 利用网页重写实现全站加密
  87. 1. 制作公私密钥
  88. 2. 编辑加密配置文件
  89. 3. 测试
  90. 十七、防盗链
  91. 1. 新建主机编辑配置文件
  92. 2. 修改 nginx 服务器配置文件防止盗链
  93. 3. 测试
  94. 十八、Nginx 的反向代理
  95. 1. 简单的代理
  96. 2. proxyhideheader 参数
  97. 3. proxypassheader
  98. 4. 透传信息 proxysetheader
  99. 1) 修改后端服务器日志信息配置
  100. 2) Nginx 修改配置文件
  101. 3) 访问后查看日志
  102. 十九、利用反向代理实现动静分离
  103. 1. 实验环境配置
  104. 2. 修改配置文件
  105. 3. 测试
  106. 二十、缓存加速
  107. 1. 高并发访问
  108. 2. 设定缓存加速
  109. 1) 主配置文件修改
  110. 2) 子配置文件修改
  111. 3. 测试
  112. 二十一、反向代理负载均衡
  113. 1. 编辑主配置文件
  114. 2. 编辑子配置文件
  115. 3. 测试
  116. 二十二、负载均衡算法
  117. 二十三、PHP 源码编译
  118. 1. 下载安装包
  119. 2. 下载依赖
  120. 3. 选择模块编译
  121. 4. 配置 PHP
  122. 1) 指定 pid 文件存放位置
  123. 2) 编辑主配置文件 www.conf
  124. 3) 修改时区配置文件
  125. 4) 生成启动文件
  126. 5. PHP 设置环境变量
  127. 二十四、Nginx 整合 PHP
  128. 1. 准备测试页面
  129. 2. 编辑配置文件
  130. 3. 测试
  131. 二十五、利用 Memcached 实现 PHP 的缓存加速
  132. 1. 下载安装 Memcached
  133. 2. 配置 Memcached
  134. 3. 升级 PHP 对于 Memcached 的支持
  135. 1) 下载 memcache-8.2.tgz 插件
  136. 2) 修改配置文件使其支持 Memcached
  137. 4. 测试性能
  138. 二十六、Nginx+Memcached 实现高速缓存
  139. 1. 重新编译 Nginx
  140. 2. 整合 Memcached
  141. 二十七、Nginx 的四层负载均衡代理
  142. 1. 后端服务器安装 MariaDB 并新建账户
  143. 2. DNS 服务
  144. 1) 修改主配置文件
  145. 2) 修改子配置文件
  146. 3) 配置解析记录
  147. 4) 测试
  148. 3. TCP 四层负载
  149. 1) 修改主配置文件
  150. 2) 编辑子配置文件
  151. 3) 测试
  152. 4. UDP 四层负载
  153. 1) 修改子配置文件
  154. 2) 测试
  155. 二十八、OpenResty 编译安装
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 从零实现 LLaMA 架构:构建轻量级大语言模型
  • AI 大模型 Token 收费机制与技术原理详解
  • 如何成为一名职业网络安全专家?
  • 网络安全工程师职业发展路径与行业现状分析
  • MySQL 事务隔离级别详解与实战
  • Stable-Diffusion-v1-5 镜像部署及 Supervisor 自动恢复方案
  • OpenClaw Dashboard 无法登录:systemd 缺失导致 Gateway 服务未启动
  • Spring Data JPA 原理与实战:Repository 接口深度解析
  • C++ STL list 容器详解与模拟实现
  • LeetCode 1227 小鸟回笼与飞机座位问题概率分析
  • Windows 系统下 VSCode 配置 C/C++ 开发环境实战
  • 默认安全治理实践:水平越权检测与前端安全防控
  • 通义千问 3-14B 对话机器人搭建指南
  • macOS 微信双开与多开脚本教程(支持 4.X 及以上版本)
  • Java JDK 下载安装与使用全流程图文教程
  • Minecraft 开源注入式客户端 LiquidBounce 使用指南
  • 情感分类实战:传统方法与生成式大模型对比
  • 基于 Python 解析 HAR 文件生成页面性能测试报告
  • RAG 与 LLM 微调对比:结合业务场景落地指南
  • 本地电脑训练专属大模型实战教程

相关免费在线工具

  • 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