目录
[一、 环境准备与依赖安装](#一、 环境准备与依赖安装)
[二、 下载与编译安装 Nginx 1.29.8](#二、 下载与编译安装 Nginx 1.29.8)
[三、 系统服务化管理(Systemd)](#三、 系统服务化管理(Systemd))
[四、 防火墙配置](#四、 防火墙配置)
[五、 核心配置与最佳实践](#五、 核心配置与最佳实践)
[六、 验证安装](#六、 验证安装)
[获取服务器 IP](#获取服务器 IP)
在 CentOS 8 上安装 Nginx 1.29.8 推荐采用源码编译安装的方式。由于 Nginx 1.29.8 属于较新版本(或特定定制版本),CentOS 8 默认的 EPEL 或 AppStream 源中通常只包含稳定版或旧版本(如 1.14, 1.18, 1.20 等)。源码安装可以确保你获得指定版本,并允许自定义模块。
一、 环境准备与依赖安装
Nginx 的某些模块(如 rewrite 模块需要 PCRE,gzip 模块需要 zlib,HTTPS 需要 OpenSSL)依赖特定的库文件,因此在编译前必须安装这些开发包。
安装编译工具及依赖库
sudo dnf install -y gcc gcc-c++ make pcre pcre-devel zlib zlib-devel openssl openssl-devel wget tar
- gcc/gcc-c++: C/C++ 编译器,用于编译源码。
- pcre-devel: 支持正则表达式,Nginx 的 rewrite 模块必需。
- zlib-devel: 支持 gzip 压缩。
- openssl-devel: 支持 HTTPS (SSL/TLS)。
检查端口占用
确保 80 和 443 端口未被其他服务(如 Apache 或已安装的旧版 Nginx)占用。
sudo netstat -tulpn | grep -E ':(80|443)'
如果有输出,请先停止相关服务。
二、 下载与编译安装 Nginx 1.29.8
#### 下载源码包 进入 /usr/local/src 目录并下载指定版本的 Nginx。
cd /usr/local/src
wget http://nginx.org/download/nginx-1.29.8.tar.gz
** 注意:如果官方镜像站暂无 1.29.8 版本(视具体发布时间而定),请确认版本号是否正确,或替换为最新的稳定版链接。**
解压并进入目录
tar -zxvf nginx-1.29.8.tar.gz
cd nginx-1.29.8
配置编译选项
使用 ./configure 指定安装路径和启用常用模块。
./configure \
--prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_stub_status_module \
--with-pcre \
--with-zlib \
--with-openssl
- --prefix: 指定安装目录为 /usr/local/nginx。
- --with-http_ssl_module: 启用 HTTPS 支持。
- --with-http_v2_module: 启用 HTTP/2 支持。
- --with-http_stub_status_module: 启用状态监控模块。
编译与安装
make
sudo make install
三、 系统服务化管理(Systemd)
为了方便启动、停止和开机自启,建议创建 systemd 服务文件,而不是直接使用二进制文件运行。
创建服务文件
sudo vi /etc/systemd/system/nginx.service
写入以下内容
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
启动与开机自启
sudo systemctl daemon-reload
sudo systemctl start nginx
sudo systemctl enable nginx
验证状态
sudo systemctl status nginx
四、 防火墙配置
CentOS 8 默认使用 firewalld 作为防火墙解决方案,需要放行 HTTP (80) 和 HTTPS (443) 端口。
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
五、 核心配置与最佳实践
Nginx 的配置文件位于安装目录下的 conf 文件夹中(本例为 /usr/local/nginx/conf/)。
配置文件结构
- 主配置文件:/usr/local/nginx/conf/nginx.conf。
- 建议将不同域名的配置拆分,存放在 /usr/local/nginx/conf/conf.d/ 目录下,并以 .conf 结尾
修改主配置文件示例
编辑 nginx.conf,确保包含以下关键设置:
user root; # 或者创建一个专门的 nginx 用户
worker_processes auto; # 自动根据 CPU 核心数设置工作进程
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
# 引入额外配置文件
include /usr/local/nginx/conf/conf.d/*.conf;
}
创建测试页面
Nginx 默认的网站根目录通常在 html 文件夹下(即 /usr/local/nginx/html/)。
echo "<h1>Welcome to Nginx 1.29.8 on CentOS 8</h1>" > /usr/local/nginx/html/index.html
重载配置
每次修改配置文件后,需检查语法并重载服务。
sudo /usr/local/nginx/sbin/nginx -t # 检查语法
sudo systemctl reload nginx # 平滑重载
六、 验证安装
获取服务器 IP
hostname -I
浏览器访问
在浏览器中输入 http://<你的服务器IP>,若看到 "Welcome to Nginx 1.29.8..." 页面,则说明安装成功。
注意事项
- SELinux: 如果启用了 SELinux 且无法访问网页,可能需要调整上下文或暂时设置为宽容模式 (setenforce 0) 进行排查。
- 版本确认: 由于 Nginx 版本迭代较快,若 nginx-1.29.8 下载失败,请前往 Nginx 官网 确认最新可用版本号并替换下载链接