Nginx的HTTPS协议服务是通过ngx_http_ssl_module模块实现的,在配置编译参数时需要添加--with-http_ssl_module参数启用该功能。
1、编译HTTPS
--prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module
2、HTTPS配置样例
resolver 114.114.114.114 valid=300s; # DNS服务器地址
resolver_timeout 5s; # DNS解析超时时间为5s
server {
listen 443 ssl;
server_name www.nginxbar.org;
charset utf-8;
root /opt/nginx-web;
index index.html index.htm;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # SSL套件版本
ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
ssl_prefer_server_ciphers on; # 启用服务端密码组件优先
ssl_dhparam ssl/dhparam.pem; # 设置DH密钥交换算法参数
ssl_ecdh_curve secp384r1; # DH密钥交换椭圆曲线算法为secp384r1
ssl_certificate ssl/www_nginxbar_org.pem; # 网站证书文件
ssl_certificate_key ssl/www_nginxbar_org.key; # 网站证书密钥文件
ssl_password_file ssl/www_nginxbar_org.pass; # 网站证书密钥密码文件
ssl_session_cache shared:SSL:10m; # 会话缓存存储大小为10MB
ssl_session_timeout 10m; # 会话缓存超时时间为10分钟
ssl_session_tickets on; # 设置会话凭证为会话缓存机制
ssl_session_ticket_key ssl/session_ticket.key;# 设置会话凭证密钥文件
ssl_stapling on; # 启用OCSP缓存
ssl_stapling_file ssl/ocsp.pem; # OCSP结果缓存文件
ssl_stapling_verify on; # 设置OCSP结果缓存证书验证
ssl_trusted_certificate ssl/ca.pem; # 网站证书信任证书链的中间证书文件
# 启用HSTS,注意,一旦开启HSTS并提交到预装清单,那浏览器使用http访问该域名下的所有子域名都将307跳转到https,所以启用前,务必慎重考虑,无法手动清除,直到设置的过期时间到期。
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
add_header X-Frame-Options DENY; # 禁止被嵌入框架
add_header X-XSS-Protection "1; mode=block"; # XSS跨站防护
add_header X-Content-Type-Options nosniff; # 防止在浏览器中的MIME类型混淆攻击
}
server {
listen 80;
server_name www.nginxbar.org;
rewrite ^(.*)$ https://$host$1? permanent; # 强制HTTP访问跳转为HTTPS访问
}
3、配置HTTP2
Nginx的HTTPS协议服务是通过ngx_http_v2_module模块实现的,在配置编译参数时需要在启用ssl模块的基础上添加--with-http_v2_module参数启用该功能。
编译HTTP2
--prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module
1.25.1之前版本
server {
listen 443 ssl http2;
server_name www.nginxbar.org;
charset utf-8;
root /opt/nginx-web;
index index.html index.htm;
}
Nginx 1.25.1更新日志
Nginx 1.25.1版本,做了如下的更新:
Feature: “http2” 指令支持在每个服务器上启用 HTTP/2,“listen” 指令的 “http2” 参数已被弃用
Change: 移除 HTTP/2 服务器推送支持
Change: 不再支持被弃用的 “ssl” 指令
Bugfix: 修复使用 OpenSSL 时在 HTTP/3 出现的错误
server {
listen 443 ssl;
http2 on;
server_name www.nginxbar.org;
charset utf-8;
root /opt/nginx-web;
index index.html index.htm;
}
注意:http2 on;可以放在http作用域。
评论区