66人参与 • 2026-09-28 • Linux
在本地开发或内网测试环境中,我们常常需要通过 https 访问服务。虽然公网环境常用 let's encrypt,但在本地测试中,使用 openssl 生成“自签名证书”是最快捷且免费的方案。
本文详细记录了在 linux 环境下,为 nginx 配置 https 的完整步骤,以及配置过程中遇到的 配置重复报错、重启失效 等真实问题的排查与解决思路。
在开始之前,请确保你的 nginx 编译了 ssl 模块。
# 检查是否安装 nginx -v # 检查是否包含 ssl 模块 nginx -v 2>&1 | grep -- '--with-http_ssl_module'
如果命令没有回显 --with-http_ssl_module,说明当前 nginx 不支持 ssl,需重新编译或通过包管理器安装带 ssl 的版本。
本地测试推荐直接用 openssl 生成,无需域名即可通过 ip 访问。
1. 创建证书存放目录
sudo mkdir -p /usr/local/nginx/conf/ssl
2. 生成私钥与证书(有效期10年)
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 \
-keyout /usr/local/nginx/conf/ssl/server.key \
-out /usr/local/nginx/conf/ssl/server.crt执行后会提示输入地区信息,测试环境可直接连续按回车跳过,或在 common name 处填入你的服务器 ip。
3. 收紧文件权限
sudo chmod 600 /usr/local/nginx/conf/ssl/server.key sudo chmod 644 /usr/local/nginx/conf/ssl/server.crt
编辑 nginx 配置文件,以下是本次部署沉淀下来的测试环境通用模板。
server {
listen 443 ssl;
server_name localhost;
# 证书路径
ssl_certificate /usr/local/nginx/conf/ssl/server.crt;
ssl_certificate_key /usr/local/nginx/conf/ssl/server.key;
# 安全策略:只开启 tlsv1.2 和 v1.3
ssl_protocols tlsv1.2 tlsv1.3;
# 加密套件:只用高强度算法,禁用匿名和md5
ssl_ciphers high:!anull:!md5;
# 优先使用服务器端加密顺序
ssl_prefer_server_ciphers on;
# 性能优化:开启会话缓存(1mb约存4000个会话)
ssl_session_cache shared:ssl:10m;
ssl_session_timeout 10m;
# 反向代理或静态资源目录
location / {
root html/sz;
index index.html index.htm;
try_files $uri $uri/ /main.html;
}
}关键指令白话释义:
在配置过程中,遇到了两个典型错误,供大家避坑。
现象:
执行 nginx -t 返回成功,但 netstat -tlnp | grep 443 没有任何输出。
核心原因:
这是最容易踩的坑。在修改配置文件并添加 443 的 server 块后,执行 ./nginx -s reload 并不会让新监听的端口生效(特别是从不监听变为监听时)。
排查验证:
./nginx -t 2>&1 | grep -a 20 "listen.*443" 确认配置已加载。ss -tlnp | grep nginx 下依然只有 80 端口。终极解法:
使用完全的停止+启动代替 reload。
# 1. 彻底停止服务 ./nginx -s stop # 2. 确认进程已消失 ps aux | grep nginx # 3. 重新启动 ./nginx # 4. 验证端口 netstat -tlnp | grep 443
因为是自签名证书,浏览器会提示“您的连接不是私密连接”或“不安全”。
curl -k https://你的服务器ip或localhost
本文梳理了 nginx 配置 https 的完整链路,特别指出了“新增端口必须重启而非重载”的隐蔽坑点。希望这份记录能帮助其他开发者在本地测试中少走弯路。
以上就是在linux环境下为nginx配置https的完整流程的详细内容,更多关于nginx配置https全攻略的资料请关注代码网其它相关文章!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论