nginx

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > nginx > Nginx配置为HTTPS

Nginx配置为HTTPS的完整步骤(支持 SSL/TLS 加密)

作者:一只游鱼

Nginx是一个高性能的HTTP和反向代理web服务器,是运维中十分常用的中间件,HTTPS协议简单来说就是HTTP协议和SSL/TLS协议的组合,这篇文章主要介绍了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 文件。你需要将这些文件上传到服务器。

步骤 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;
    }
}

测试 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 连接。

总结

到此这篇关于Nginx配置为HTTPS的文章就介绍到这了,更多相关Nginx配置为HTTPS内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文