温馨提示×

ubuntu lnmp 怎样配置ssl

小樊
43
2026-10-24 14:58:57
栏目: 云计算

在 Ubuntu 上基于 LNMP(Linux + Nginx + MySQL + PHP) 配置 SSL(通常免费使用 Let’s Encrypt),一般步骤如下:


一、前提条件

  1. 已安装 LNMP(Nginx 正常运行)
  2. 有一个域名(如 example.com)
  3. 域名已解析到服务器公网 IP
  4. 服务器 80 和 443 端口可访问

二、安装 Certbot(Let’s Encrypt 工具)

Ubuntu 20.04 / 22.04 / 24.04

sudo apt update
sudo apt install certbot python3-certbot-nginx -y

三、使用 Certbot 自动配置 SSL(推荐)

1. 为域名申请并自动配置 Nginx

sudo certbot --nginx -d example.com -d www.example.com

按提示:

  • 输入邮箱
  • 同意条款
  • 是否重定向 HTTP → HTTPS(建议选 2)

Certbot 会:

  • 自动申请证书
  • 修改 Nginx 配置
  • 启用 443 端口

四、手动配置 SSL(适合自定义 LNMP 环境)

1. 申请证书

sudo certbot certonly --webroot -w /var/www/example -d example.com

2. 修改 Nginx 站点配置

编辑:

sudo nano /etc/nginx/sites-available/example.com

示例配置:

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name example.com www.example.com;

    ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

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

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
    }
}

3. 测试并重载 Nginx

sudo nginx -t
sudo systemctl reload nginx

五、自动续期 SSL 证书

Certbot 默认已添加定时任务,可手动测试:

sudo certbot renew --dry-run

六、常见问题

1. 80 端口被占用

sudo lsof -i:80

确保 Nginx 正在监听 80 端口。

2. 使用 CDN(如 Cloudflare)

  • 关闭 “强制 HTTPS”
  • 或选择 DNS 验证方式:
sudo certbot certonly --manual --preferred-challenges dns -d example.com

3. 自签名证书(测试用)

sudo openssl req -x509 -newkey rsa:2048 -nodes \
-keyout key.pem -out cert.pem -days 365

如果你用的是 LNMP 一键安装包(lnmp.org) 或 宝塔面板,我也可以给你对应版本的具体操作。

0 踩