Nginx 配置为 HTTPS(支持 SSL/TLS 加密)

Nginx 配置为 HTTPS(支持 SSL/TLS 加密)

步骤 1:获取 SSL 证书

你可以选择使用 Let's Encrypt 提供的免费 SSL 证书,或者购买其他 CA(证书颁发机构)提供的证书。以 Let's Encrypt 为例:

使用 Let's Encrypt 获取免费证书

  1. 安装 Certbot(Let's Encrypt 官方工具):
  2. sudo yum install epel-release -y
  3. sudo yum install certbot python3-certbot-nginx -y
  4. 获取 SSL 证书
    假设你有一个域名(例如 your_domain.com)并且已经配置了该域名指向你的服务器 IP。

运行以下命令来请求证书:

sudo certbot --nginx -d your_domain.com

Certbot 会自动生成证书并配置 Nginx,使其支持 HTTPS。如果配置成功,Certbot 会自动更新你的 Nginx 配置文件,将 HTTP 重定向到 HTTPS。

手动获取 SSL 证书

如果你购买了 SSL 证书,通常证书提供商会提供 .crt 和 .key 文件。你需要将这些文件上传到服务器。

  • 证书文件(例如 your_domain.crt)
  • 私钥文件(例如 your_domain.key)

步骤 2:配置 Nginx 使用 SSL 证书

如果你使用 Certbot,Nginx 配置会自动更新,但如果你手动配置 SSL,请按照以下步骤进行:

备份原始的 Nginx 配置文件
在进行修改之前,备份你的 Nginx 配置文件以防万一:sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak

编辑 Nginx 配置文件
打开你的站点配置文件,通常位于 /etc/nginx/conf.d/ 或 /etc/nginx/sites-available/。

sudo vi /etc/nginx/nginx.conf

如果你使用了 Certbot,Nginx 的 SSL 配置可能已经完成。如果是手动配置,添加以下 SSL 配置:

server {

    listen 80;

    server_name your_domain.com www.your_domain.com;

   

    # 301 重定向 HTTP 到 HTTPS

    return 301 https://$host$request_uri;

}



server {

    listen 443 ssl;

    server_name your_domain.com www.your_domain.com;



    # SSL 配置

    ssl_certificate /etc/nginx/ssl/your_domain.crt;

    ssl_certificate_key /etc/nginx/ssl/your_domain.key;

    ssl_session_cache shared:SSL:1m;

    ssl_session_timeout 5m;



    # 强制使用最新的 SSL 协议

    ssl_protocols TLSv1.2 TLSv1.3;

    ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:...';

    ssl_prefer_server_ciphers on;



    # 其他配置

    location / {

        root /usr/share/nginx/html;

        index index.html index.htm;

    }

}

ssl_certificate:你的 SSL 证书 文件路径。

ssl_certificate_key:你的 SSL 私钥 文件路径。

ssl_protocols:配置支持的 SSL/TLS 协议。

ssl_ciphers:设置强加密的密码套件。

测试 Nginx 配置
在重新加载 Nginx 之前,先测试配置文件是否正确:

sudo nginx -t

如果显示 syntax is ok,表示配置没有问题。

重新加载 Nginx
重新加载 Nginx 配置以应用更改:

sudo systemctl reload nginx

步骤 3:自动更新 SSL 证书(如果使用 Let's Encrypt

如果你使用的是 Let's Encrypt,你可以通过 Certbot 自动更新证书。Certbot 默认会设置自动续期,证书将在到期前自动更新。

可以通过以下命令手动测试自动续期:

sudo certbot renew --dry-run

步骤 4:确保防火墙允许 HTTPS 流量

确保 443 端口(HTTPS)已经打开,并且防火墙允许该端口的流量。你可以使用以下命令查看防火墙规则,并允许 443 端口:

sudo firewall-cmd --zone=public --add-port=443/tcp --permanent

sudo firewall-cmd --reload

步骤 5:访问 HTTPS

现在,你可以通过 https://your_domain.com 来访问你的网站。如果一切配置正确,访问时会看到一个安全的 HTTPS 连接。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值