详解nginx如何配置HTTPS

  

以下是详解nginx如何配置HTTPS的完整攻略。

第一步:准备工作

在配置HTTPS前,需要先准备好以下内容:

  1. 一张签名过的SSL证书。
  2. 一份支持SSL的nginx安装文件。

第二步:安装SSL证书

将得到的SSL证书的两个文件:.crt和.key文件上传到服务器的指定目录下,我们这里用/etc/nginx/cert/目录作为例子。

第三步:修改nginx配置文件

在nginx的配置文件中添加支持HTTPS的配置:

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

server {
    listen 443 ssl http2 default_server;
    server_name your_domain.com; 

    ssl_certificate /etc/nginx/cert/your_domain.com.crt;
    ssl_certificate_key /etc/nginx/cert/your_domain.com.key;

    location / {
        # 配置后端接口}
}

其中,server表示服务器块,用于定义本虚拟主机的相关参数。listen表示监听端口,server_name表示服务的域名。ssl_certificatessl_certificate_key表示SSL证书和密钥的文件位置。

需要注意的地方有:http2表示启用HTTP/2协议,default_server表示默认服务器。

第四步:重启nginx服务

修改完nginx配置文件后,需要重启nginx服务才能使配置生效。使用以下命令来重启nginx:

sudo service nginx restart

第五步:检验配置

在完成以上步骤后,可以使用浏览器访问https://your_domain.com,如果能正常访问,那么HTTPS的配置就已经完成了。

示例说明

下面给出两个示例说明:

示例一:通过Certbot自动签发证书

  1. 安装Certbot命令行工具。
  2. 在命令行运行以下命令生成证书:

sudo certbot certonly --webroot -w /path/to/your/web/root -d your_domain.com

这里的/path/to/your/web/root是你的网站根目录。

  1. 证书生成完成后,将得到的.pem证书文件上传到服务器上。
  2. 在nginx配置文件中添加以下配置:

```
server {
listen 443 ssl http2 default_server;
server_name your_domain.com;

   ssl_certificate /etc/letsencrypt/live/your_domain.com/fullchain.pem;
   ssl_certificate_key /etc/letsencrypt/live/your_domain.com/privkey.pem;

   location / {
       # 配置后端接口}

}
```

需要注意的是,这里的证书文件路径应该指向证书上传到服务器后的路径。

示例二:使用Cloudflare提供的SSL证书

  1. 在Cloudflare中启用Universal SSL,生成证书。
  2. 在nginx配置文件中添加以下配置:

```
server {
listen 443 ssl http2 default_server;
server_name your_domain.com;

   ssl_certificate /etc/nginx/cert/cloudflare.crt;
   ssl_certificate_key /etc/nginx/cert/cloudflare.key;

   location / {
       # 配置后端接口}

}
```

这里的/etc/nginx/cert/是证书文件上传到服务器的路径,需要将Cloudflare给你的证书文件命名为cloudflare.crtcloudflare.key

相关文章