如何利用Nginx SSL成功搭建HTTPS安全网站?

要在Nginx上搭建HTTPS网站,你需要首先安装Nginx和OpenSSL库。然后生成自签名证书或从证书颁发机构(CA)购买证书。配置Nginx以使用SSL证书并启用HTTPS。重启Nginx服务以应用更改。

Nginx SSL搭建 HTTPS 网站

Nginx SSL搭建 HTTPS 网站
(图片来源网络,侵删)

1. 准备工作

1.1 获取SSL证书

要使用HTTPS,首先需要获得一个SSL证书,有许多机构可以提供免费的SSL证书,例如Let’s Encrypt,以下是如何通过Certbot工具自动获取和安装Let’s Encrypt证书的步骤:

1、安装Certbot:

“`bash

Nginx SSL搭建 HTTPS 网站
(图片来源网络,侵删)

sudo aptget update

sudo aptget install softwarepropertiescommon

sudo addaptrepository universe

sudo addaptrepository ppa:certbot/certbot

sudo aptget update

Nginx SSL搭建 HTTPS 网站
(图片来源网络,侵删)

sudo aptget install certbot python3certbotnginx

“`

2、运行Certbot并按照提示操作:

“`bash

sudo certbot nginx d example.com d www.example.com

“`

这将为您的域名生成一个有效期为90天的证书,并在Nginx中配置它。

1.2 配置Nginx

确保您的Nginx配置文件(通常位于/etc/nginx/sitesavailable/default/etc/nginx/conf.d/default.conf)已经正确设置,以下是一个基本的HTTPS配置示例:

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}
server {
    listen 443 ssl;
    server_name example.com www.example.com;
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # 证书路径
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # 私钥路径
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
    location / {
        root /var/www/html; # 网站根目录
        index index.html index.htm;
    }
}

2. 重启Nginx服务

完成上述配置后,需要重启Nginx服务以使更改生效:

sudo systemctl restart nginx

3. 验证HTTPS配置

您可以通过浏览器访问您的网站,并检查是否已成功启用HTTPS,在地址栏中,您应该看到一个小锁图标,表示连接是安全的。

4. 自动续期证书

为了确保您的SSL证书始终保持有效,可以使用Certbot的自动续期功能,编辑Certbot的定时任务文件:

sudo nano /etc/crontab

添加以下行以每天检查并更新证书:

0 3 * * * root certbot renew quiet && service nginx reload

保存并退出编辑器,这将确保您的证书在到期前自动更新。

相关问题与解答

问题1:如何在Nginx中配置多个域名?

答:在Nginx配置文件中,您可以为每个域名创建一个单独的server块。

server {
    listen 80;
    server_name domain1.com www.domain1.com;
    return 301 https://$host$request_uri;
}
server {
    listen 80;
    server_name domain2.com www.domain2.com;
    return 301 https://$host$request_uri;
}

这样,每个域名都有自己的server块,可以根据需要进行独立配置。

问题2:如何查看当前Nginx使用的SSL证书信息?

答:您可以使用以下命令来查看当前Nginx使用的SSL证书信息:

sudo openssl s_client connect example.com:443 servername example.com

这将显示证书的详细信息,包括颁发者、有效期等。

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/954978.html

(0)
未希的头像未希新媒体运营
上一篇 2024-08-29 17:04
下一篇 2024-08-29 17:06

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购  >>点击进入