下面我来详细讲解“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 安全性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Nginx服务器配置HTTPS nginx.config 配置文件(教程) - Python技术站