目 录CONTENT

文章目录

Nginx设置http跳转https

简中仙
2022-09-07 / 0 评论 / 0 点赞 / 59 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
本文最后更新于2024-08-26,若内容或图片失效,请留言反馈。 本文如有错误或者侵权的地方,欢迎您批评指正!

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作用域。

0

评论区