解码Nginx如何快速实现HSTS跳转
什么是HSTS
HSTS是国际互联网工程组织 IETF 正在推行一种新的Web安全协议,网站采用HSTS后,用户访问时无需手动在地址栏中输入 HTTPS,浏览器会自动采用 HTTPS 访问网站地址,从而保证用户始终访问到网站的加密链接,保护数据传输安全。
浏览器版本支持
Chromium和Google Chrome从4.0.211.0版本开始支持HSTS
Firefox 4及以上版本
Opera 12及以上版本
Safari从OS X Mavericks起
Internet Explorer从Windows 10技术预览版开始支持,之后微软又向IE11用户推送了支持HSTS的更新。
HSTS的优点和缺点
优点:
- 比传统的302重定向更加安全,不会被劫持;
- 对访问速度有提示,302 跳转需要一个 RTT消耗,浏览器执行跳转也需要时间。
缺点
- 用户首次访问某网站是不受HSTS保护的。这是因为首次访问时,浏览器还未收到HSTS,所以仍有可能通过明文HTTP来访问。
- HSTS会在一定时间段后失效,需要手动设置缓存期。
操作步骤
server { listen 80 ; server_name www.itrus.cn; # 避免首次访问不跳转的情况,使用301重定向进行跳转 return 301 https://$host; } server { listen 443 ssl; server_name www.itrus.cn; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; location /servlet { add_header X-Served-By "My Servlet Handler"; add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; proxy_pass http://localhost:8080; } }
配置修改完成后,需要重启nginx服务规则才会生效。
注释:
可选的参数:includeSubDomains 设置该策略适用于当前域下的所有子域
参数:max-age=31536000 设置该策略缓存时间为31536000秒(1年)
一旦设置启动HSTS策略,功能会在由max-age指定缓冲期中持续生效。在此期间,浏览器将会拒绝通过以HTTP访问web服务,并同时拒绝证书错误的例外选项。*
302重定向设置方式
如果暂时继续使用302方式进行重定向跳转,请参考以下代码在http站点配置中添加。
server { listen 80; server_name www.itrus.cn; rewrite ^(.*)$ https://$host$1 permanent; }
或者
if ($scheme = http) { return 301 https://$host$request_uri; }
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
直播预约 | 如何为云原生应用带来稳定高效的部署能力?
作者 | 酒祝 阿里云技术专家、墨封阿里云开发工程师 本次直播为第 3 期 SIG Cloud-Provider-Alibaba 网研会,我们邀请了阿里云技术专家 酒祝和阿里云开发工程师 墨封 重点讲解《如何为云原生应用带来稳定高效的部署能力?》。 点击链接预约直播:https://yq.aliyun.com/live/2898 随着近年来 Kubernetes 逐渐成为事实标准和大量应用的云原生化,我们却往往发现 Kubernetes 的原生 workload 对大规模化应用的支持并不十分“友好”。我们已经不止一次听到来自用户和开发者们的抱怨: 发布升级会触发 Pod 删除、重建,带来的问题:1. 无法保留 IP、Volume(hostPath / emptyDir)等数据;2. 发布时间较长,一次 Pod 重建涉及重新调度、分
- 下一篇
ES[7.6.x]学习笔记(十)聚合查询
聚合查询,它是在搜索的结果上,提供的一些聚合数据信息的方法。比如:求和、最大值、平均数等。聚合查询的类型有很多种,每一种类型都有它自己的目的和输出。在ES中,也有很多种聚合查询,下面我们看看聚合查询的语法结构, "aggregations" : { "<aggregation_name>" : { "<aggregation_type>" : { <aggregation_body> } [,"meta" : { [<meta_data_body>] } ]? [,"aggregations" : { [<sub_aggregation>]+ } ]? } [,"<aggregation_name_2>" : { ... } ]* } aggregations实体包含了所有的聚合查询,如果是多个聚合查询可以用数组,如果只有一个聚合查询使用对象,aggregations也可以简写为aggs。aggregations里边的每一个聚合查询都有一个逻辑名称,这个名称是用户自定义的,在我们的语法结构中,对应的是<agg...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS8编译安装MySQL8.0.19