nginx+php+mysql 部署的网站,https 端口为1443,html接口是8080,如何部署自动更新ssl证书
ChatGPT 说:在 Nginx + PHP + MySQL 部署的网站中,使用 HTTPS(端口 1443)并且 HTML 接口在 8080 端口上时,自动更新 SSL 证书通常需要使用 Let's Encrypt 的免费证书,并结合 [url=]Certbot[/url] 工具进行自动更新。 步骤概述:安装 Certbot 和 Nginx 插件 使用 Certbot 申请 SSL 证书 配置 Nginx 配置自动更新
1. 安装 Certbot 和 Nginx 插件首先,确保你的服务器上安装了 Certbot 和 Nginx 插件。执行以下命令来安装: bash
复制编辑
# 更新系统包索引sudo apt update# 安装 Certbot 和 Nginx 插件sudo apt install certbot python3-certbot-nginx
2. 使用 Certbot 申请 SSL 证书执行以下命令以申请 SSL 证书: bash
复制编辑
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
Certbot 会提示你选择是否强制使用 HTTPS(重定向 HTTP 到 HTTPS),选择 Yes 即可。 3. 配置 Nginx确保 Nginx 配置正确地使用了 SSL 证书。你需要在 Nginx 配置文件中设置 HTTPS 端口(1443),同时确保 HTTP 端口(8080)也配置正确。 你的 /etc/nginx/conf.d/web.conf 配置可能如下所示: nginx
复制编辑
server { listen 1443 ssl; server_name yourdomain.com www.yourdomain.com; ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem; # 其它SSL相关配置... ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256'; ssl_prefer_server_ciphers on; root /data/lesrec; index index.html index.htm index.php; # 其它配置... # 强制 HTTP -> HTTPS 重定向(如果需要) location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.4-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }}server { listen 8080; server_name yourdomain.com; root /data/lesrec; index index.html index.htm; # 配置 HTTP(仅限用于 HTML 接口) location / { try_files $uri $uri/ =404; }}
4. 配置自动更新 SSL 证书Let's Encrypt 的证书有效期为 90 天,因此你需要配置自动更新。Certbot 提供了一个定时任务来自动更新证书。 bash
复制编辑
sudo crontab -e
添加以下行来每天检查证书是否需要更新,并自动重新加载 Nginx: bash
复制编辑
0 3 * * * certbot renew --quiet && systemctl reload nginx
验证 SSL 自动更新为了确保自动更新正常工作,可以手动测试证书更新: bash
复制编辑
sudo certbot renew --dry-run
如果一切正常,你会看到一个“干运行”测试通过的信息,表示 Certbot 可以正常更新证书。 总结这样,你就可以确保 SSL 证书会自动更新,并且 Nginx 会在证书更新后自动重新加载新证书。
|