服务器 > 服务器 > Linux

在Linux环境下为Nginx配置HTTPS的完整流程

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 配置详解

编辑 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 语法正确但 443 端口未监听

现象:
执行 nginx -t 返回成功,但 netstat -tlnp | grep 443 没有任何输出。

核心原因:
这是最容易踩的坑。在修改配置文件并添加 443 的 server 块后,执行 ./nginx -s reload 并不会让新监听的端口生效(特别是从不监听变为监听时)。

排查验证:

  1. 通过 ./nginx -t 2>&1 | grep -a 20 "listen.*443" 确认配置已加载。
  2. 但 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全攻略的资料请关注代码网其它相关文章!

赞 (0)

您想发表意见!!点此发布评论

推荐阅读

Linux skill命令实现按用户或终端批量管理进程的实用指南

09-28

Linux查看进程用ps -ef还是ps aux?一文看懂区别

09-28

Linux如何查看jar包错误日志及持久化运行jar包

09-28

Ubuntu软件安装与彻底卸载的完整指南

09-28

Linux开机启动流程详解 init进程和运行级别怎么理解

09-29

matplotlib绘制多图技巧:subplot和subplots方法哪个更好用

09-29

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论