nginx 配置 https
按照如下格式修改配置文件,80端口会自动转给443端口,这样就强制使用SSL证书加密了。访问http的时候会自动跳转到https上面。
server {
listen 80;
server_name www.域名.com;
rewrite ^(.*) https://$server_name$1 permanent;
}
server {
listen 443;
server_name www.域名.com;
ssl on;
ssl_certificate /etc/nginx/certs/server.crt;
ssl_certificate_key /etc/nginx/certs/server.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
}
ssl_session_cache shared:SSL:1m;
指定 SSL 会话缓存类型和大小。这里的 shared 表示将缓存共享给所有 Nginx 工作进程,在高并发场景下可以提升性能。SSL 是缓存名称,1m 表示缓存大小为 1 MB。
ssl_session_timeout 5m;
这个指令定义了 SSL 会话的有效期。当客户端和服务器之间进行 SSL 握手时,SSL 会话被创建并保存在服务器端。ssl_session_timeout 规定了这个会话的存活时间,也就是客户端和服务器之间一段时间内可以重复使用相同的 SSL 会话,而不需要进行新的握手操作。在这个例子中,会话的有效期被设置为 5 分钟。
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
这个指令定义了支持的 SSL/TLS 协议版本。在这个例子中,服务器支持 TLSv1、TLSv1.1 和 TLSv1.2 版本的协议。根据实际情况,您可能需要增加或者减少这个列表中的协议版本。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
这个指令定义了服务器支持的加密套件(cipher suite)列表。其中:
ECDHE-RSA-AES128-GCM-SHA256 表示使用 ECDHE-RSA 密钥交换协议和 AES128-GCM 加密算法等加密套件。
HIGH 表示选择加密强度较高的加密套件。
!aNULL 表示禁止使用匿名加密算法。
!MD5 表示禁止使用 MD5 摘要算法。
!RC4 表示禁止使用 RC4 加密算法。
!DHE 表示禁止使用基于 Diffie-Hellman 密钥交换算法的加密套件。
由于安全性的原因,该配置禁止了一些不安全的加密套件,只保留了比较安全的加密套件。
ssl_prefer_server_ciphers on;
这个指令表示在客户端和服务器之间协商 SSL/TLS 加密套件时,优先使用服务器端支持的加密套件。这个选项可以提高安全性,避免使用客户端支持但是服务器端不安全或者不希望使用的加密套件。