要在Ubuntu中为PHP-FPM启用HTTPS,您需要先获取SSL证书,然后配置Web服务器(例如Nginx或Apache)以便使用该证书并与PHP-FPM进行通信。以下是在Ubuntu中使用Nginx和Let’s Encrypt SSL证书为PHP-FPM启用HTTPS的步骤:
sudo apt update
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
将yourdomain.com
替换为您的实际域名。Certbot将自动为您的域名获取Let’s Encrypt SSL证书,并配置Nginx以使用该证书。
在Certbot提示时,选择是否将HTTP请求重定向到HTTPS。建议选择“是”。
Certbot将自动修改Nginx配置文件(通常位于/etc/nginx/sites-available/yourdomain.com-le-ssl.conf
),以启用HTTPS。确保以下部分已正确配置:
server {
...
listen 443 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_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; # 根据您的PHP版本更改此行
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
...
}
sudo systemctl restart nginx
现在,您的PHP-FPM应用程序应该已通过HTTPS提供服务。请注意,Let’s Encrypt证书有效期为90天,因此您需要使用certbot renew
命令定期更新证书。Certbot还提供了一个cron作业或systemd定时器,可以自动执行此操作。