温馨提示×

linux nginx怎样开启ssl

小樊
41
2026-10-07 21:25:19
栏目: 云计算

在 Linux 上通过 Nginx 开启 SSL(HTTPS),通常包括:申请/生成证书 → 配置 Nginx → 重载 Nginx。下面给你一套常见、可用的做法。


一、准备 SSL 证书

方式 1:使用 Let’s Encrypt(推荐,免费)

适合有公网域名的情况。

# 安装 certbot
sudo apt update
sudo apt install certbot python3-certbot-nginx -y

# 自动申请并配置
sudo certbot --nginx -d example.com -d www.example.com

certbot 会自动:

  • 申请证书
  • 修改 Nginx 配置
  • 开启 443 端口

方式 2:使用自签名证书(测试用)

没有域名或仅本地测试时使用。

sudo openssl req -x509 -nodes -days 365 \
  -newkey rsa:2048 \
  -keyout /etc/nginx/ssl/nginx.key \
  -out /etc/nginx/ssl/nginx.crt

按提示填写信息即可。


二、手动配置 Nginx SSL(通用方式)

编辑站点配置文件(如 /etc/nginx/conf.d/ssl.conf 或 /etc/nginx/sites-enabled/default):

server {
    listen 80;
    server_name example.com;

    # 强制跳转 HTTPS
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate     /etc/nginx/ssl/nginx.crt;
    ssl_certificate_key /etc/nginx/ssl/nginx.key;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    root /var/www/html;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

三、检查并重启 Nginx

# 检查配置
sudo nginx -t

# 重载配置
sudo systemctl reload nginx

四、防火墙放行 443 端口

# UFW
sudo ufw allow 443/tcp

# firewalld
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

五、验证

浏览器访问:

https://example.com

或命令行:

curl -I https://example.com

六、常见问题

  • ❌ 证书不受信任 → 自签名证书浏览器会警告
  • ❌ 443 无法访问 → 检查防火墙 / 云服务器安全组
  • ❌ Nginx 起不来 → 看 journalctl -u nginx

如果你告诉我:

  • 使用的 Linux 发行版(Ubuntu / CentOS / Alibaba Cloud)
  • 是否有域名
  • 是否用 Docker

我可以给你更精确的一键配置方案。

0 踩