Nginx部署手册
Nginx部署手册
以下是适用于主流Linux系统(CentOS/Ubuntu)的Nginx完整使用手册,涵盖安装、基础配置、HTTPS配置及常见管理操作,同时补充问题排查方法,适配你的证书配置相关需求。
一、Nginx安装
Nginx安装:
- 包管理器安装(推荐新手)
- 源码编译安装(适合自定义功能)
1. CentOS系统 【推荐使用】
(1)yum包管理器安装(简单高效)
- 更新系统并安装依赖:
sudo yum update -y sudo yum install epel-release -y # 安装EPEL仓库 - 安装Nginx:
sudo yum install nginx -y - 启停与开机自启:
sudo systemctl start nginx # 启动 sudo systemctl enable nginx # 开机自启 sudo systemctl status nginx # 查看运行状态 - 放行防火墙端口: 【云服务是在安全组中放开端口】
sudo firewall-cmd --permanent --add-service=http # 放行80端口 sudo firewall-cmd --permanent --add-service=https # 放行443端口 sudo firewall-cmd --reload # 重载防火墙规则
(2)源码编译安装(自定义安装路径和模块)--- 了解
- 安装编译依赖:
sudo yum install gcc pcre-devel zlib-devel openssl-devel wget -y - 下载并解压源码包(以1.24.0稳定版为例):
wget https://nginx.org/download/nginx-1.24.0.tar.gz tar -zxvf nginx-1.24.0.tar.gz cd nginx-1.24.0 - 配置编译参数(指定安装路径并启用SSL模块):
./configure --prefix=/usr/local/nginx --with-http_ssl_module - 编译并安装:
make && make install - 快速启停:
/usr/local/nginx/sbin/nginx # 启动 /usr/local/nginx/sbin/nginx -s stop # 停止 /usr/local/nginx/sbin/nginx -s reload # 重载配置
2. Ubuntu系统
更新源并安装Nginx:
sudo apt update -y sudo apt install nginx -y启停管理:
sudo systemctl start nginx sudo systemctl enable nginx防火墙(UFW)放行(如启用 UFW):
sudo ufw allow "Nginx Full" # 放行 80/443 sudo ufw status
二、Nginx基础配置
1. 配置文件架构说明
Nginx 采用"主配置 + 子配置"的分层结构:
/etc/nginx/nginx.conf(主配置,已存在)
├── 全局配置(worker进程数、错误日志级别等)
└── http { ... } 块
├── 通用HTTP设置(gzip、日志格式、mime类型等)
└── include 指令 → 自动加载站点配置文件
├── include /etc/nginx/conf.d/*.conf; ← CentOS/RHEL
└── include /etc/nginx/sites-enabled/*; ← Ubuntu/Debian
为什么要分成两个文件?
主配置文件(
nginx.conf):- 系统已自带,包含全局设置(worker 进程、日志、gzip 等)
- 一般不需要手动修改,只需检查其中的
include指令
站点配置文件(
conf.d/*.conf或sites-available/*):- 你需要新建的文件,每个网站一个独立配置
- 通过主配置的
include自动加载,无需手动关联 - 好处:管理多个网站时互不干扰,启用/禁用站点只需增删文件
核心文件路径对照表:
| 文件/目录 | 作用 |
|---|---|
| /etc/nginx/nginx.conf | 主配置文件(已存在),包含全局设置和 include 指令 |
| /etc/nginx/conf.d/ | 站点配置目录(CentOS/RHEL),主配置会自动加载 *.conf |
| /etc/nginx/sites-available/ + sites-enabled/ | 站点配置目录(Ubuntu/Debian),需软链接启用 |
| /usr/share/nginx/html | 默认网站根目录(CentOS/RHEL) |
| /var/www/html | 默认网站根目录(Debian/Ubuntu) |
| /var/log/nginx/ | 日志目录(access.log、error.log) |
2. 主配置文件(nginx.conf)示例与说明
查看你的主配置文件:
cat /etc/nginx/nginx.conf
典型的 nginx.conf 结构(CentOS 为例):
user nginx;
worker_processes auto; # 自动根据CPU核心数调整
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024; # 单个worker进程最大连接数
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
# 日志格式定义
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
# 性能优化
sendfile on;
tcp_nopush on;
keepalive_timeout 65;
gzip on;
# ★★★ 关键:自动加载站点配置 ★★★
include /etc/nginx/conf.d/*.conf; # CentOS/RHEL
# Ubuntu/Debian 是:include /etc/nginx/sites-enabled/*;
}
重要说明:
- 最后一行的
include /etc/nginx/conf.d/*.conf;会自动加载conf.d目录下所有.conf文件 - 你只需在
conf.d目录新建站点配置,主配置文件nginx.conf无需修改 - Ubuntu/Debian 的主配置是
include /etc/nginx/sites-enabled/*;(无.conf后缀要求)
3. 基础HTTP站点配置(子配置文件)
以配置www.islh.cn为例,按系统放置配置文件:
- CentOS/RHEL(使用
conf.d):sudo vim /etc/nginx/conf.d/islh.cn.conf - Debian/Ubuntu(使用
sites-available+sites-enabled):sudo vim /etc/nginx/sites-available/islh.cn sudo ln -s /etc/nginx/sites-available/islh.cn /etc/nginx/sites-enabled/islh.cn
写入以下内容,实现基础HTTP访问(注意按系统替换网站根目录:CentOS 用 /usr/share/nginx/html,Ubuntu 用 /var/www/html):
server {
listen 80;
listen [::]:80;
server_name www.islh.cn islh.cn; # 绑定你的域名
root /usr/share/nginx/html; # Ubuntu/Debian 请改为 /var/www/html
index index.html index.htm; # 默认首页
# 访问日志配置
access_log /var/log/nginx/islh_access.log;
error_log /var/log/nginx/islh_error.log;
# 静态资源缓存配置(可选,扩展更多类型)
location ~* \.(avif|webp|jpg|jpeg|png|gif|svg|ico|css|js|map|woff|woff2|ttf)$ {
expires 30d; # 缓存30天
add_header Cache-Control "public";
access_log off;
}
}
配置完成后检查语法并重载:
sudo nginx -t # 检查语法,显示syntax is ok即正常
sudo systemctl reload nginx
三、HTTPS配置
HTTPS配置核心是获取SSL证书并配置Nginx启用443端口,以下以免费的Let's Encrypt证书为例。
1. 获取SSL证书
安装Certbot工具:
- CentOS:
sudo yum install certbot python3-certbot-nginx -y - Ubuntu:
sudo apt install certbot python3-certbot-nginx -y
- CentOS:
自动获取证书并配置Nginx:
sudo certbot --nginx -d www.islh.cn # 替换为你的域名执行后按提示操作,Certbot会自动生成证书并修改Nginx配置。
手动配置证书(若使用第三方付费证书或未使用
--nginx自动改写)- 若通过 Certbot 获取证书,推荐直接使用标准路径:
- 证书:
/etc/letsencrypt/live/islh.cn/fullchain.pem - 私钥:
/etc/letsencrypt/live/islh.cn/privkey.pem
- 证书:
- 若是第三方证书,可放置于
/etc/nginx/ssl/并调整下方路径。
编辑站点配置文件(参考不同系统路径):
- CentOS/RHEL:
/etc/nginx/conf.d/islh.cn.conf - Debian/Ubuntu:
/etc/nginx/sites-available/islh.cn(并确保已在sites-enabled建立软链接)
写入HTTPS配置(包含 HTTP→HTTPS 跳转、IPv6、HTTP/2、HSTS、OCSP Stapling): ```nginx server { listen 80; listen [::]:80; server_name www.islh.cn islh.cn; return 301 https://request_uri; # HTTP强制跳转HTTPS } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name www.islh.cn islh.cn;
证书路径(优先使用 Certbot 标准路径,第三方证书请改为 /etc/nginx/ssl/.pem|.key)
ssl_certificate /etc/letsencrypt/live/islh.cn/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/islh.cn/privkey.pem;SSL安全配置(提升兼容性和安全性)
ssl_protocols TLSv1.2 TLSv1.3; # 仅启用安全协议 # TLSv1.3 使用内置套件;下行主要影响 TLSv1.2 ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE+AESGCM; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; ssl_prefer_server_ciphers off;HSTS(启用后强制浏览器仅走 HTTPS,确认站点稳定再开启)
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;OCSP Stapling(提升证书校验性能与安全性)
ssl_stapling on; ssl_stapling_verify on; resolver 8.8.8.8 1.1.1.1 valid=300s; resolver_timeout 5s; ssl_trusted_certificate /etc/letsencrypt/live/islh.cn/chain.pem;网站基础配置
root /usr/share/nginx/html; # Ubuntu/Debian 请改为 /var/www/html index index.html;access_log /var/log/nginx/islh_https_access.log; error_log /var/log/nginx/islh_https_error.log; } ```
- 若通过 Certbot 获取证书,推荐直接使用标准路径:
2. 证书自动续期
Let's Encrypt证书有效期为90天,可通过以下命令设置自动续期:
sudo certbot renew --dry-run # 测试续期
Certbot默认会添加定时任务,无需手动重复操作。
3. 验证HTTPS配置
- 检查配置并重载Nginx:
sudo nginx -t sudo systemctl reload nginx - 浏览器访问
https://www.islh.cn,若地址栏显示小锁图标则配置成功。也可通过SSL Labs检测证书有效性。
四、Nginx常用管理命令
| 命令 | 作用 |
|---|---|
sudo nginx -t | 检查配置文件语法 |
sudo systemctl reload nginx | 重载配置(不中断服务) |
sudo systemctl restart nginx | 重启Nginx |
sudo systemctl stop nginx | 停止Nginx |
tail -f /var/log/nginx/error.log | 实时查看错误日志 |
五、常见问题排查
- 配置HTTPS后仍提示危险:检查证书是否匹配域名、证书链是否完整。使用 Certbot 时可通过
openssl x509 -in /etc/letsencrypt/live/islh.cn/fullchain.pem -noout -text查看证书详情;若使用第三方证书,请改为对应.pem路径。 - Nginx启动失败:通过
journalctl -u nginx查看启动日志,大概率是端口被占用或配置文件语法错误。 - 证书验证不通过:确认服务器443端口对外开放,且域名解析指向当前服务器IP。