阅读量:7
Ubuntu上Nginx配置SSL的详细步骤
1. 安装Nginx
如果尚未安装Nginx,使用以下命令安装:
sudo apt update
sudo apt install nginx
安装完成后,启动Nginx并设置开机自启:
sudo systemctl start nginx
sudo systemctl enable nginx
2. 获取SSL证书
SSL证书是HTTPS的核心,推荐使用Let’s Encrypt(免费)或购买商业证书。以下以Let’s Encrypt为例:
- 安装Certbot及Nginx插件:
sudo apt install certbot python3-certbot-nginx - 获取证书:
运行Certbot命令,替换yourdomain.com为你的域名(需提前解析到服务器IP):
Certbot会自动检测Nginx配置,完成证书生成并修改Nginx配置(无需手动编辑)。sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
3. 配置Nginx使用SSL
若手动管理证书(非Certbot自动配置),需编辑Nginx的站点配置文件(通常位于/etc/nginx/sites-available/):
- 创建/编辑配置文件(以
yourdomain.com为例):sudo nano /etc/nginx/sites-available/yourdomain.com - 添加/修改配置:
包含HTTP强制跳转HTTPS和HTTPS监听配置:# HTTP监听(强制跳转HTTPS) server { listen 80; server_name yourdomain.com www.yourdomain.com; return 301 https://$host$request_uri; } # HTTPS监听(核心配置) server { listen 443 ssl; server_name yourdomain.com www.yourdomain.com; # 证书路径(Certbot自动放置证书时,路径为以下格式) 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'; ssl_prefer_server_ciphers on; # 网站根目录(根据实际情况调整) root /var/www/yourdomain.com; index index.html index.htm; location / { try_files $uri $uri/ =404; } }注:若使用Certbot自动配置,上述内容会被自动生成,无需手动添加。
4. 测试Nginx配置
修改配置文件后,务必测试语法是否正确:
sudo nginx -t
若输出nginx: configuration file /etc/nginx/nginx.conf test is successful,说明配置无误。
5. 重新加载Nginx
测试通过后,重新加载Nginx使配置生效:
sudo systemctl reload nginx
6. 验证SSL生效
- 打开浏览器,访问
https://yourdomain.com,检查地址栏是否显示安全锁图标(表示SSL生效)。 - 使用在线工具(如SSL Labs)测试SSL配置的安全性。
7. 自动续期Let’s Encrypt证书
Let’s Encrypt证书有效期为90天,Certbot会自动设置定时任务(每天检查)。可手动测试续期:
sudo certbot renew --dry-run
若无报错,说明续期功能正常,无需额外操作。
以上步骤覆盖了Ubuntu上Nginx配置SSL的全流程,涵盖证书获取、配置修改、测试验证及自动续期,确保网站实现安全的HTTPS访问。