nginx安装加速
参考资料
nginx安装加速
Nginx 安装加速:从源选择到编译优化的完整实践
在服务器上安装 Nginx 时,"慢"通常来自三个环节:软件源速度、依赖下载、编译过程。本文从这几个环节入手,给出可以直接落地的加速方案,适用于 Debian/Ubuntu、RHEL/CentOS 以及容器环境。
一、判断慢在哪里
动手之前,先确认瓶颈,避免盲目优化。 bash
测试官方源与镜像源的响应速度
time curl -o /dev/null -s -w "%{http_code} %{time_total}s\n" https://nginx.org/download/nginx-1.27.0.tar.gz time curl -o /dev/null -s -w "%{http_code} %{time_total}s\n" https://mirrors.aliyun.com/nginx/nginx-1.27.0.tar.gz 如果 `time_total` 超过 2 秒,多半是网络链路问题,优先换源;如果下载快但安装慢,则是依赖解析或编译环节的问题。
二、包管理器换用镜像源
这是收益最高、改动最小的一步。
Debian / Ubuntu
备份原有源,替换为就近镜像: bash sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak sudo sed -i 's|deb.debian.org|mirrors.aliyun.com|g' /etc/apt/sources.list sudo apt update sudo apt install -y nginx Ubuntu 新版本使用 `deb822` 格式,对应文件在 `/etc/apt/sources.list.d/ubuntu.sources`,同样替换域名即可。
RHEL / CentOS / Rocky
bash sudo sed -i 's|mirrorlist=|#mirrorlist=|g; s|#baseurl=http://dl.rockylinux.org|baseurl=https://mirrors.aliyun.com/rockylinux|g' /etc/yum.repos.d/*.repo sudo dnf makecache sudo dnf install -y nginx 换源后执行一次 `makecache`,后续安装可直接复用元数据。
关键点
- 修改前务必备份原文件,便于回滚。
- 只替换域名,不要改动发行版代号与仓库路径,否则容易 404。
- 用 `apt-get -o Acquire::http::Timeout=10 update` 之类的参数可以避免个别慢节点长时间卡住。
三、用官方预编译包替代源码编译
如果不需要自定义模块,直接安装发行版或官方仓库的二进制包,比源码编译快得多。
Nginx 官方提供 apt/yum 仓库,配置后可获得较新的稳定版: bash
Debian/Ubuntu 官方仓库
sudo apt install -y curl gnupg2 ca-certificates lsb-release curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo gpg --dearmor -o /usr/share/keyrings/nginx-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/ubuntu $(lsb_release -cs) nginx" | sudo tee /etc/apt/sources.list.d/nginx.list sudo apt update && sudo apt install -y nginx 二进制包省去了 `configure` + `make` 的数分钟过程,是"安装加速"最直接的手段。
四、源码编译时如何加速
确实需要编译(如要加第三方模块)时,从以下角度提速:
1. 并行编译
bash ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_v2_module make -j$(nproc) sudo make install `-j$(nproc)` 让编译使用全部 CPU 核心,通常能把时间缩短到原来的 1/2 到 1/4(具体取决于核数)。
2. 减少可选模块
`configure` 时只保留必要模块。模块越少,编译越快、二进制越小。可以用 `./configure --help` 查看默认启用项,按需关闭。
3. 复用已下载的依赖
编译依赖 `pcre`、`zlib`、`openssl`。提前用系统包安装并复用,避免源码目录重复编译: bash sudo apt install -y libpcre3-dev zlib1g-dev libssl-dev
4. 使用 ccache 缓存编译产物
多次编译同一版本时,`ccache` 能显著减少重复工作: bash sudo apt install -y ccache export PATH="/usr/lib/ccache:$PATH"
五、容器环境下的加速
拉取官方镜像时,配置镜像加速可明显提升速度。以 Docker 为例,编辑 `/etc/docker/daemon.json`: json { "registry-mirrors": ["https://mirror.example.com"] }bash sudo systemctl daemon-reload sudo systemctl restart docker docker pull nginx:stable 注意:镜像地址应使用你实际可用的服务,不要照抄不明来源的地址。
六、安装完成后的服务加速
安装只是第一步,让 Nginx 运行得更快同样重要。
| 优化项 | 配置位置 | 作用 |
|---|---|---|
| worker 进程数 | `worker_processes auto;` | 匹配 CPU 核心数 |
| 连接数上限 | `worker_connections 10240;` | 提升并发处理能力 |
| sendfile | `sendfile on;` | 零拷贝传输静态文件 |
| keepalive | `keepalive_timeout 65;` | 复用连接,减少握手 |
| 静态资源压缩 | `gzip on;` | 减小传输体积 |
| 文件描述符 | systemd `LimitNOFILE` | 支撑高并发 |
检查配置是否正确: bash sudo nginx -t sudo systemctl reload nginx 系统层面可配合内核参数调整,例如: bash sudo sysctl -w net.core.somaxconn=65535 sudo sysctl -w net.ipv4.tcp_tw_reuse=1
七、版本与部署方式选择建议
| 场景 | 推荐方式 | 理由 |
|---|---|---|
| 生产环境常规部署 | 官方/发行版二进制包 | 稳定、升级方便、安装快 |
| 需要第三方模块 | 源码编译 + 并行 | 灵活,配合 `-j` 提速 |
| 快速验证、CI | 容器镜像 | 免安装,秒级启动 |
| 离线/内网环境 | 预下载包 |
时间:2026-10-07
来源:https://mirror.ciilii.com/
