最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Linux 如何为 Nginx 配置 SSL 证书实现 HTTPS 访问
时间:2026-09-04 10:14:49 编辑:袖梨 来源:一聚教程网
Nginx 配置 HTTPS 需满足三要素:编译时启用 --with-http_ssl_module 模块、证书与私钥路径正确且权限合规(私钥600)、HTTP 与 HTTPS 分属独立 server 块并正确监听端口。
Nginx 要跑 HTTPS,核心就三件事:模块得有、证书得对、配置得准。缺一不可,卡住的往往不是步骤多,而是某个细节没到位。
确认 Nginx 已编译 SSL 模块
Nginx 本身不自带 HTTPS 支持,必须编译时加 --with-http_ssl_module 才能识别 ssl_certificate 这类指令。
- 运行
nginx -V 2>&1 | grep -o with-http_ssl_module - 有输出说明模块已启用;没输出,后续所有配置都会失败,
nginx -t直接报unknown directive "ssl_certificate" - 若缺失,需回到源码目录重新编译:
./configure --prefix=/usr/local/nginx --with-http_ssl_module-
make(别make install,避免覆盖配置) cp objs/nginx /usr/local/nginx/sbin/
- 注意:系统缺少
openssl-devel(CentOS)或libssl-dev(Ubuntu)会导致 configure 静默跳过 SSL 模块,务必提前装好
上传并设置证书文件权限
证书和私钥必须放对位置、设对权限,否则 Nginx 启动失败或拒绝读取。
- 推荐路径:
/etc/nginx/ssl/(创建命令:sudo mkdir -p /etc/nginx/ssl) - 把
.crt(或.pem)和.key文件上传至此目录 - 私钥权限必须是
600:sudo chmod 600 /etc/nginx/ssl/your_domain.key - 证书文件权限建议
644,但关键是私钥不能被组或其他人读取 - 路径必须写绝对路径,不能用
~/或相对路径,Nginx 不解析 shell 符号 - 私钥不能加密(即生成时没设密码),如有,用
openssl rsa -in server.key.org -out server.key去密
配置独立的 HTTP 和 HTTPS server 块
HTTP 和 HTTPS 必须分开写在两个独立的 server 块里,混在一起会直接报错。
-
HTTPS server(监听 443):
-
listen 443 ssl http2;(ssl关键字不可少) server_name your-domain.com;ssl_certificate /etc/nginx/ssl/your-domain.com.crt;ssl_certificate_key /etc/nginx/ssl/your-domain.com.key;
-
-
HTTP server(监听 80,仅用于跳转):
listen 80;server_name your-domain.com;-
return 301 https://$server_name$request_uri;(比rewrite更简洁可靠)
- 不要在一个
server块里同时写listen 80和ssl_certificate,Nginx 会拒绝加载
验证并重载服务
改完配置不是直接重启,得先验证再平滑生效。
- 运行
sudo nginx -t检查语法是否正确 - 若提示 success,执行
sudo nginx -s reload重载配置 - 检查 443 端口是否监听:
sudo ss -tlnp | grep :443 - 确保防火墙放行 443(如
sudo ufw allow 443或sudo firewall-cmd --permanent --add-port=443/tcp) - 浏览器访问
https://your-domain.com,看是否锁图标正常,无证书警告
不复杂但容易忽略
相关文章
- 光驱检测修复硬盘做法 09-04
- u启动U盘检测修复硬盘 09-04
- TPLink TLWDR7500 51~54 无线路由器家长控制管控小孩上网行为 09-04
- DiskGenius修复硬盘操作步骤 09-04
- TPLink TLWDR7500 52 无线路由器打印机设置指南 09-04
- TPLink TLWR746N 无线路由器IP带宽控制功能分配带宽 09-04