基于Nginx实现HTTPS网站设置的步骤

  

下面我将详细讲解“基于Nginx实现HTTPS网站设置的步骤”的完整攻略。

1. 前置条件

在进行 HTTPS 网站设置之前,需要具备如下前置条件:

  • 已经安装了 Nginx;
  • 已经获得了 SSL 证书;
  • DNS 服务已经将域名解析到 Nginx 的 IP 地址上;
  • 已经将 443 端口添加到 Nginx 的防火墙规则中。

2. 步骤

2.1 安装 SSL 证书

将你获得的 SSL 证书上传至服务器上。对于不同的 SSL 证书提供商,证书的具体文件格式可能有所不同,但大体上都会包含一个证书文件(以 .crt.pem 为后缀名)和一个私钥文件(以 .key.pem 为后缀名)。为了方便管理,我们建议将这些文件放入一个名为 ssl 的目录中。

2.2 配置 Nginx

在进行 HTTPS 网站设置之前,我们需要先对 Nginx 进行如下配置:

将 Nginx 配置文件备份:

sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak

打开 Nginx 配置文件 /etc/nginx/nginx.conf,找到默认的 server 配置段,并将其修改如下:

server {
    listen 80;
    server_name example.com;
    return 301 https://$server_name$request_uri;
}

以上配置实现将 HTTP 请求重定向到 HTTPS,其中 example.com 换成你自己的域名即可。

保存并关闭 Nginx 配置文件。

2.3 配置 HTTPS

在 Nginx 的默认 server 配置段下添加如下配置:

server {
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /etc/nginx/ssl/example.com.crt;
    ssl_certificate_key /etc/nginx/ssl/example.com.key;

    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    location / {
        root /var/www/example.com;
        index index.html;
    }
}

以上配置的作用是:

  • 启用 HTTPS,并监听 443 端口;
  • 指定 SSL 证书文件和私钥文件的路径;
  • 配置 SSL 会话缓存和超时时间;
  • 指定支持的 TLS 协议版本;
  • 指定使用的加密算法;
  • 配置网站根目录和默认主页。

其中,/var/www/example.com 是网站的根目录,index.html 是默认主页。这里我们假设网站根目录下有一个 index.html 文件。

保存并关闭 Nginx 配置文件。

2.4 重启 Nginx

重启 Nginx 服务以使配置生效:

sudo systemctl restart nginx

2.5 测试 HTTPS

在浏览器中访问 https://example.com 是否可以正常访问。如果能够正常访问,则说明 HTTPS 设置成功。

3. 示例说明

示例1

假设你的域名是 myexample.com,你已经安装了 Nginx,并且已经获得了一份名为 myexample.com.crt 的 SSL 证书,那么你可以按照如下步骤进行 HTTPS 网站设置:

  1. myexample.com.crt 和对应的私钥文件 myexample.com.key 上传至服务器上,并将它们放置在 /etc/nginx/ssl/ 目录下。

  2. 打开 Nginx 配置文件 /etc/nginx/nginx.conf,找到默认的 server 配置段,并将其修改为以下内容:

nginx
server {
listen 80;
server_name myexample.com;
return 301 https://$server_name$request_uri;
}

  1. 在 Nginx 配置文件的默认 server 配置段下面添加如下内容:

```nginx
server {
listen 443 ssl;
server_name myexample.com;

   ssl_certificate /etc/nginx/ssl/myexample.com.crt;
   ssl_certificate_key /etc/nginx/ssl/myexample.com.key;

   ssl_session_cache shared:SSL:10m;
   ssl_session_timeout 10m;

   ssl_protocols TLSv1.2 TLSv1.3;
   ssl_ciphers HIGH:!aNULL:!MD5;

   location / {
       root /var/www/myexample.com;
       index index.html;
   }

}
```

  1. 保存并关闭 Nginx 配置文件。

  2. 重启 Nginx 服务:sudo systemctl restart nginx

  3. 在浏览器中访问 https://myexample.com 是否可以正常访问。如果能够正常访问,则说明 HTTPS 设置成功。

示例2

假设你的域名是 mytest.com,你已经安装了 Nginx,并且已经获得了一份名为 mytest.com.pem 的 SSL 证书,那么你可以按照如下步骤进行 HTTPS 网站设置:

  1. mytest.com.pem 和对应的私钥文件 mytest.com.key 上传至服务器上,并将它们放置在 /usr/local/nginx/ssl/ 目录下。

  2. 打开 Nginx 配置文件 /usr/local/nginx/conf/nginx.conf,找到默认的 server 配置段,并将其修改为以下内容:

nginx
server {
listen 80;
server_name mytest.com;
return 301 https://$server_name$request_uri;
}

  1. 在 Nginx 配置文件的默认 server 配置段下面添加如下内容:

```nginx
server {
listen 443 ssl;
server_name mytest.com;

   ssl_certificate /usr/local/nginx/ssl/mytest.com.pem;
   ssl_certificate_key /usr/local/nginx/ssl/mytest.com.key;

   ssl_session_cache shared:SSL:10m;
   ssl_session_timeout 10m;

   ssl_protocols TLSv1.2 TLSv1.3;
   ssl_ciphers HIGH:!aNULL:!MD5;

   location / {
       root /usr/local/nginx/html/mytest.com;
       index index.html;
   }

}
```

  1. 保存并关闭 Nginx 配置文件。

  2. 重启 Nginx 服务:sudo nginx -s reload

  3. 在浏览器中访问 https://mytest.com 是否可以正常访问。如果能够正常访问,则说明 HTTPS 设置成功。

以上就是基于 Nginx 实现 HTTPS 网站设置的完整攻略。

相关文章