linux中安装nginx分两种方式:包管理器安装适合新手和常规使用,自动处理依赖并集成systemd;源码编译安装则适用于需启用http/2、tls 1.3或第三方模块等定制化场景,可精准控制版本、路径与模块。

Linux 中安装配置 Nginx 服务,关键看你是用包管理器快速部署,还是从源码编译定制。前者适合大多数场景,省时稳定;后者适合需要特定模块(如 HTTP/2、TLS 1.3 增强、第三方模块)或生产环境严格控版本的情况。
用包管理器一键安装(推荐新手和常规使用)
这是最简单可靠的方式,系统会自动处理依赖并集成 systemd 管理。
-
Ubuntu / Debian:运行
sudo apt update && sudo apt install -y nginx,安装完成后执行sudo systemctl enable --now nginx启动并设为开机自启 -
CentOS / RHEL / Rocky / AlmaLinux:先启用 EPEL 源(
sudo yum install -y epel-release或sudo dnf install -y epel-release),再运行sudo yum install -y nginx(CentOS 7/8)或sudo dnf install -y nginx(RHEL 9+),最后sudo systemctl enable --now nginx - 验证是否运行:
sudo systemctl status nginx,看到active (running)即成功;浏览器访问服务器 IP(如http://192.168.1.100)能看到 “Welcome to nginx!” 页面
源码编译安装(适合定制化需求)
适用于需启用特定模块(如 --with-http_v2_module、--with-openssl=...)、规避发行版旧版本限制,或统一多台服务器部署路径的场景。
- 先装基础编译工具和依赖:
Ubuntu:sudo apt install -y build-essential libpcre3-dev zlib1g-dev libssl-dev
CentOS/RHEL:sudo yum install -y gcc pcre-devel zlib-devel openssl-devel - 下载解压源码(以 1.25.3 为例):
wget https://nginx.org/download/nginx-1.25.3.tar.gz && tar zxvf nginx-1.25.3.tar.gz && cd nginx-1.25.3 - 配置编译参数(示例):
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module - 编译并安装:
make -j$(nproc) && sudo make install - 添加 systemd 服务文件(
/etc/systemd/system/nginx.service),填入标准 Forking 类型定义,再执行sudo systemctl daemon-reload && sudo systemctl enable --now nginx
基础配置与验证要点
无论哪种安装方式,配置文件主路径都是 /etc/nginx/nginx.conf(包管理器)或 /usr/local/nginx/conf/nginx.conf(源码)。首次修改建议从默认 server 块入手:
- 确认
listen 80;已启用,且server_name可留空或设为服务器 IP/域名 - 检查
root路径(如/var/www/html或/usr/local/nginx/html)下是否有index.html - 修改后务必重载:
sudo nginx -t测试语法 →sudo nginx -s reload(包管理器)或sudo /usr/local/nginx/sbin/nginx -s reload(源码) - 防火墙要放行端口:CentOS/RHEL 用
sudo firewall-cmd --add-port=80/tcp --permanent && sudo firewall-cmd --reload;Ubuntu 默认用 ufw:sudo ufw allow 80
常见问题速查
安装或启动失败时,优先检查这几项:
-
nginx: command not found→ 检查 PATH 是否包含 bin 目录(源码安装需手动加:export PATH=$PATH:/usr/local/nginx/sbin,写入~/.bashrc并source) -
address already in use→ 其他进程占用了 80 端口,用sudo ss -tulpn | grep ':80'查看并终止 - 网页打不开但服务显示运行 → 查日志:
sudo tail -f /var/log/nginx/error.log(包管理器)或sudo tail -f /usr/local/nginx/logs/error.log(源码) -
configure: error: C compiler cc is not found→ 缺少 gcc,补装gcc和gcc-c++











