温馨提示×

Ubuntu上Nginx SSL配置步骤是什么

小樊
45
2025-11-01 01:06:54
栏目: 云计算

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):
    sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
    
    Certbot会自动检测Nginx配置,完成证书生成并修改Nginx配置(无需手动编辑)。

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访问。

0