解碼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;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章