解码Nginx如何快速实现HSTS跳转

简介: 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;
    }
目录
相关文章
|
7月前
|
应用服务中间件 nginx
【报错】在nginx下启动,登录成功后页面不跳转
【报错】在nginx下启动,登录成功后页面不跳转
294 4
|
安全 网络协议 应用服务中间件
Nginx配置http跳转https
Nginx配置http跳转https
372 0
|
6月前
|
应用服务中间件 nginx Windows
nginx实现网站url带参跳转 POST请求GET请求跳转
nginx实现网站url带参跳转 POST请求GET请求跳转
318 1
|
6月前
|
网络协议 安全 应用服务中间件
阿里云 网站https设置 sll申请与nginx跳转配置
阿里云 网站https设置 sll申请与nginx跳转配置
201 0
|
7月前
|
应用服务中间件 nginx
nginx配置访问qicaitun.com强制跳转www.qicaitun.com
nginx配置访问qicaitun.com强制跳转www.qicaitun.com
37 0
|
缓存 搜索推荐 应用服务中间件
|
前端开发 应用服务中间件 nginx
Nginx的反向代理自动301跳转避坑
当Web服务器为Nginx时,若浏览器访问的uri最后不带斜杠,如www.xxx.com.cn/aaa,当aaa是一个目录时,会产生301跳转,且自动将uri补全为www.xxx.com.cn/aaa/,最后添加一个/。当前端存在Nginx反向代理时,就会存在一个坑。
3186 0
|
应用服务中间件 nginx
Nginx:proxy_pass和try_files 301跳转带了端口
Nginx:proxy_pass和try_files 301跳转带了端口
490 0
|
缓存 应用服务中间件 PHP
Nginx及rewrite跳转(二)
Nginx及rewrite跳转(二)
Nginx及rewrite跳转(二)
|
存储 Java 应用服务中间件
线程池设计, 从简单的我们平常设计线程池图解,到生活中的类似线程池的处理现实场景, 到简单的C++模拟nginx写的单链表组织工作队列的简单线程池实现 + nginx 部分源码刨析
线程池设计, 从简单的我们平常设计线程池图解,到生活中的类似线程池的处理现实场景, 到简单的C++模拟nginx写的单链表组织工作队列的简单线程池实现 + nginx 部分源码刨析
线程池设计, 从简单的我们平常设计线程池图解,到生活中的类似线程池的处理现实场景, 到简单的C++模拟nginx写的单链表组织工作队列的简单线程池实现 + nginx 部分源码刨析