最新下载
热门教程
- 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,看是否锁图标正常,无证书警告
不复杂但容易忽略
相关文章
- mcjs网页版即点即玩-mcjs极速秒玩入口 10-23
- 超星学习通网页版登录-超星学习通官网入口 10-23
- poki免费游戏大全-poki免费游戏在线畅玩入口 10-23
- mc.js官方在线入口 10-23
- 海角haijiao社区2025全新网址一键直达-海角社区最新官方入口地址 10-23
- 王者荣耀世界体力上限与恢复方法详解 王者荣耀世界体力机制全面解析 10-20