nignx部署(centos)

CentOS 系统 Nginx 完整部署详细文档(含原理+实战+排错)

一、文档概述

本文档适用于 CentOS 7 / CentOS 8 / CentOS 9 全系列系统,采用官方EPEL稳定源安装Nginx,无编译复杂度、生产环境零适配风险。全程包含环境准备、安装部署、命令详解、配置解析、三大核心实战场景、防火墙配置、日志排查、异常处理及卸载流程,所有配置均带详细注释和原理讲解,可直接用于测试及生产环境。

适用场景:静态网站部署、前后端分离项目部署、后端服务反向代理、HTTPS加密部署、端口转发、负载均衡基础场景。

二、环境前置说明

  • 系统环境:CentOS 7(yum包管理器)、CentOS 8/9(dnf包管理器,兼容yum命令)

  • 安装方式:EPEL官方扩展源安装(稳定、安全、自动适配系统依赖,优先推荐)

  • 网络要求:服务器联网,可正常访问外网下载软件包

  • 权限要求:全程使用root用户或拥有sudo最高权限用户操作

三、Nginx 正式安装(全系统适配)

3.1 CentOS 7 安装步骤

复制代码

# 1. 安装EPEL扩展源(核心:CentOS默认官方源无Nginx,必须安装此源)

yum install epel-release -y

# 2. 刷新本地软件源缓存,确保识别最新软件包

yum makecache

# 3. 正式安装Nginx

yum install nginx -y(tip这里如果不存在这个nignx,那就换一个镜像源)

3.2 CentOS 8 / CentOS 9 安装步骤

直接启用

你的系统是 CentOS Stream 9,自带 AppStream 内置 nginx 模块,不用第三方源,直接执行下面命令:

启用 nginx 模块(任选一个版本,推荐 1.26 最新稳定版)

复制代码
dnf module enable nginx:1.26 -y

安装nignx

复制代码
dnf install nginx -y

四、Nginx 服务命令全集(带详细原理解释)

所有命令为生产环境标准用法,区分临时操作、永久操作、平滑重启、强制重启,规避业务中断风险。

# 1. 启动Nginx(临时启动,服务器重启后失效)

systemctl start nginx

# 2. 设置开机自启(永久生效,服务器重启自动运行Nginx)

systemctl enable nginx

# 3. 查看运行状态(查看进程是否存活、启动报错、运行日志)

systemctl status nginx

# 4. 停止Nginx服务(立即停止所有服务,断开所有连接)

systemctl stop nginx

# 5. 平滑重载配置【生产首选】 # 原理:不中断现有用户访问连接,仅加载新配置,无业务停机时间

nginx -s reload

# 6. 强制重启【禁止生产随意使用】 # 原理:强制终止所有进程、断开用户连接,重新启动服务,会造成短暂断服

systemctl restart nginx

# 7. 配置语法校验【修改配置后必执行】 # 原理:检测配置文件语法错误(缺分号、括号错位、路径错误等),精准定位报错行

nginx -t

# 8. 快速停止Nginx(强制终止进程)

nginx -s stop

# 9. 优雅停止Nginx(等待现有请求处理完毕后再关闭,温和退出)

nginx -s quit

安装验证 :启动服务后,访问服务器公网IP或本机 127.0.0.1,出现Nginx默认欢迎页面,即代表安装成功。

五、防火墙端口放行(外网访问必备)

CentOS默认开启firewalld防火墙,未放行端口时,外网无法访问网站,仅本机可访问,必须执行以下配置。

# 放行HTTP 80端口(普通网页访问端口)

firewall-cmd --add-service=http --permanent

# 放行HTTPS 443端口(加密网页访问端口,SSL证书必备)

firewall-cmd --add-service=https --permanent

# 重载防火墙规则,使配置永久生效

firewall-cmd --reload

# 查看所有已放行的服务/端口,确认配置生效

firewall-cmd --list-services

参数解释

--permanent:代表永久生效,不加此参数的配置仅临时生效,服务器重启或防火墙重载后配置失效。

六、Nginx 核心目录结构全解析

掌握目录结构是运维排错、配置管理的基础,所有核心文件作用如下:

# 1. 全局主配置文件(控制Nginx整体运行参数)

/etc/nginx/nginx.conf

# 2. 站点独立配置目录【核心推荐目录】

# 规则:该目录下所有 .conf 后缀文件会被Nginx自动加载,用于拆分多站点配置 /etc/nginx/conf.d/

# 3. 默认网站静态资源根目录(默认欢迎页存放路径)

/usr/share/nginx/html/

# 4. 全局日志目录(所有网站访问、错误日志汇总)

/var/log/nginx/ access.log

# 全局访问日志(记录所有用户访问记录)

error.log

# 全局错误日志(记录服务启动、运行报错)

# 5. Nginx可执行程序文件

/usr/sbin/nginx

# 6. 临时缓存、运行资源目录

/var/lib/nginx/

# 7. 系统服务注册文件(开机自启依赖文件)

/usr/lib/systemd/system/nginx.service

七、主配置文件 nginx.conf 逐行注释详解

路径:/etc/nginx/nginx.conf,为Nginx全局核心配置,控制所有站点通用规则,以下为默认完整带注释版本:

# 定义Nginx工作进程数,auto代表自动适配服务器CPU核心数(最优配置)

worker_processes auto;

# 全局错误日志存储路径、日志级别

error_log /var/log/nginx/error.log;

# 记录Nginx进程PID文件路径,用于进程管理

pid /run/nginx.pid;

# 加载Nginx扩展模块配置

include /usr/share/nginx/modules/*.conf;

# 事件模块:控制网络连接参数 events { # 单个工作进程最大支持连接数 worker_connections 1024; }

# HTTP全局模块:所有网站共用配置

http { # 定义日志输出格式,记录访客IP、访问时间、请求地址、状态码、浏览器信息等 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';

# 全局访问日志调用上述定义的main格式

access_log /var/log/nginx/access.log main; sendfile on;

# 开启高效文件传输模式,提升静态资源访问速度

tcp_nopush on;

# 优化网络数据包传输效率

tcp_nodelay on;

# 关闭延迟发送,提升响应速度

keepalive_timeout 65;

# 长连接超时时间,65秒无请求自动断开连接

types_hash_max_size 4096;

# 拓展文件类型哈希表大小,提升解析效率

include /etc/nginx/mime.types;

# 加载文件类型映射(识别html、css、图片等资源)

default_type application/octet-stream;

# 默认文件解析类型 # 自动加载conf.d目录下所有站点配置(多站点核心)

include /etc/nginx/conf.d/*.conf; }

重要原则 :主配置文件仅修改全局参数,所有站点、业务配置全部放在 conf.d 目录,避免主配置臃肿、出错难排查。

八、实战一:静态网站部署(Vue/HTML/单页项目)

适用于纯静态页面、Vue/React打包后的dist项目,解决单页路由刷新404问题,附带静态资源缓存优化。

8.1 创建网站目录

# 创建网站资源存放目录

mkdir -p /home/www/web

将前端打包后的所有文件(dist内文件)上传至 /home/www/web 目录。

8.2 新建站点配置文件

新建配置:/etc/nginx/conf.d/web.conf

server { listen 80; # 监听80端口,HTTP默认端口

server_name 你的域名; # 填写服务器域名或公网IP

root /home/www/web; # 网站资源根目录

index index.html index.htm; # 默认访问首页文件

# 单独配置站点日志,区分全局日志,方便排查单站问题 access_log /var/log/nginx/web_access.log; error_log /var/log/nginx/web_error.log;

# 核心配置:解决Vue/React单页应用刷新404问题

location / { try_files $uri $uri/ /index.html; }

# 静态资源缓存优化,减轻服务器压力,提升访问速度 location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ { expires 30d; # 资源缓存30天 add_header Cache-Control "public"; } }

8.3 生效配置

# 校验配置语法 nginx -t # 平滑重载生效 nginx -s reload

九、实战二:后端服务反向代理(Java/Node/Python)

适用于SpringBoot、Node、Python等后端项目,通过Nginx统一接收外网请求,转发至本地后端服务,隐藏后端端口、提升安全性。

9.1 新建代理配置

新建配置:/etc/nginx/conf.d/api.conf

server { listen 80;

server_name 你的API域名; # 所有请求转发至本地8080端口的后端服务

location / { proxy_pass http://127.0.0.1:8080; # 传递真实客户端信息给后端(核心,否则后端获取不到真实IP)

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Forwarded-Proto $scheme; } }

9.2 配置生效

nginx -t nginx -s reload

常见问题:502 Bad Gateway 代表后端服务未启动、端口填写错误或端口被占用。

十、日志查看与问题排查方法

10.1 实时查看访问日志

tail -f /var/log/nginx/access.log

10.2 实时查看错误日志(排错核心)

tail -f /var/log/nginx/error.log

10.3 常见报错汇总及解决方案

  • 外网无法访问网站:防火墙未放行80/443端口,重新执行防火墙放行命令

  • nginx -t 语法报错:配置文件缺分号、大括号不匹配、路径错误,根据提示行号修改

  • 页面刷新404 :单页项目未配置 try_files 规则,补充静态站点核心配置

  • 502 Bad Gateway:反向代理的后端服务未启动、端口错误、服务崩溃

  • 403 Forbidden:网站目录权限不足、index首页文件不存在

十一、Nginx 卸载完整流程

11.1 CentOS7 卸载

yum remove nginx -y rm -rf /etc/nginx /var/log/nginx

11.2 CentOS8/9 卸载

dnf remove nginx -y rm -rf /etc/nginx /var/log/nginx

删除残留配置和日志,确保卸载干净,无残留文件影响后续重装。

十二、生产环境核心注意事项

  • 所有业务配置统一放在 conf.d 目录,禁止直接修改主配置文件,便于后期维护和迁移。

  • 修改配置后必须执行 nginx -t 校验,确认无报错后再重载,避免服务启动失败。

  • 生产环境优先使用 nginx -s reload 平滑重启,禁止随意使用 restart 强制重启。

  • 多站点部署时,每个站点独立创建conf配置文件,互不干扰,排错更精准。

  • 定期清理Nginx日志文件,避免日志过大占用服务器磁盘空间。

  • 开启HTTPS后,关闭老旧不安全的SSL协议,提升网站安全等级。