在CentOS上为Nginx配置HTTPS涉及几个步骤,包括获取SSL证书、配置Nginx以及重启Nginx服务。以下是详细步骤:
你可以从Let’s Encrypt免费获取SSL证书,或者购买一个商业证书。
安装Certbot:
sudo yum install epel-release
sudo yum install certbot python2-certbot-nginx
获取证书:
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
按照提示完成证书的获取和配置。
假设你已经安装了Nginx并且有一个基本的配置文件 /etc/nginx/nginx.conf,你需要编辑你的站点配置文件(通常位于 /etc/nginx/conf.d/ 或 /etc/nginx/sites-available/ 目录下)。
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
location / {
return 301 https://$host$request_uri;
}
}
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;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
root /var/www/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
配置完成后,重启Nginx服务以应用更改:
sudo systemctl restart nginx
打开浏览器并访问 https://yourdomain.com,你应该能够看到你的网站并且浏览器地址栏会显示安全锁标志。
自动续期:Let’s Encrypt证书有效期为90天,Certbot可以自动续期证书。你可以设置一个cron任务来自动续期:
sudo crontab -e
添加以下行:
0 0,12 * * * certbot renew --post-hook "systemctl reload nginx"
防火墙设置:确保你的防火墙允许443端口的流量:
sudo firewall-cmd --permanent --zone=public --add-service=https
sudo firewall-cmd --reload
通过以上步骤,你应该能够在CentOS上成功为Nginx配置HTTPS。