Nginx服务器配置HTTPS nginx.config 配置文件(教程)

  

下面我来详细讲解“Nginx服务器配置HTTPS nginx.config 配置文件(教程)”的完整攻略。

什么是HTTPS

HTTPS 是一种安全的HTTP协议,它是在HTTP协议和TLS/SSL协议上建立的。通过 HTTPS 传输的数据经过 SSL/TLS 加密,可以有效地防止数据被篡改或窃取。在 Web 安全方面,HTTPS 是一个非常重要的概念。

配置HTTPS

要使用 HTTPS,需要在服务器上安装 SSL/TLS 证书,并在 Nginx 配置文件中添加一些配置。下面我以 Ubuntu 16.04 系统为例,演示如何配置 HTTPS。

安装 SSL/TLS 证书

首先需要在服务器上安装 SSL/TLS 证书。可以选择使用免费的 Let's Encrypt 证书,也可以使用收费的商业证书。这里以 Let's Encrypt 证书为例,并假设已经安装了 certbot 工具。

使用以下命令来为域名 example.com 申请证书:

sudo certbot certonly --webroot -w /var/www/html -d example.com -d www.example.com

该命令将使用 webroot 方式验证域名,会在 /var/www/html 目录下创建一个 .well-known 目录,并在其中创建验证文件,验证域名所有权。注意将 example.com 和 www.example.com 替换为你自己的域名。

执行该命令后,会在 /etc/letsencrypt/live/example.com 目录下生成证书和密钥文件。

配置 Nginx

接下来需要在 Nginx 配置文件中添加 HTTPS 相关配置。

打开 Nginx 配置文件,一般位于 /etc/nginx/nginx.conf 或 /etc/nginx/conf.d/default.conf。添加以下内容:

server {
    listen 80;
    server_name example.com www.example.com;
    rewrite ^(.*)$ https://$server_name$1 permanent;
}

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_session_timeout 5m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # 根据需要开启
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AE128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:ECDHE-RFA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:DHE-RSA-AES256-SHA;
    ssl_prefer_server_ciphers on; # 根据需要开启
    ssl_session_cache shared:SSL:50m;
    ssl_stapling on; # 可以不开启
    ssl_stapling_verify on; # 可以不开启
    add_header Strict-Transport-Security max-age=15768000;
    location / {
        # 其他配置
    }
}

以上配置中,将 HTTP 请求重定向到 HTTPS,添加了 SSL/TLS 相关配置,加强了 SSL/TLS 安全性,同时添加了 HSTS 头,增强了安全性。

重启 Nginx

全部配置完成后,需要重启 Nginx 服务使配置生效。执行以下命令来重启 Nginx:

sudo systemctl restart nginx

示例说明

示例一:开启 HSTS

在以上配置文件中,有以下代码:

add_header Strict-Transport-Security max-age=15768000;

这是开启了 HSTS,这里的 max-age 参数定义了 HSTS 头有多长时间的效力,15768000 秒约为半年的时间。开启 HSTS 可以防范 SSL/TLS 中间人攻击,强制客户端一直采用 HTTPS 协议与服务器交互。

示例二:开启 OCSP Stapling

在以上配置文件中,有以下两行代码:

ssl_stapling on;
ssl_stapling_verify on;

这是开启了 OCSP Stapling,这个功能可以减少客户端获取 SSL/TLS 证书吊销信息的延迟。开启 OCSP Stapling 可以提高 SSL/TLS 安全性。

相关文章