Nginx小技巧——幾種常見實現301重定向方法上的區別
阿新 • • 發佈:2018-12-27
Nginx下常見的301跳轉有以下三種,雖然都能達到同樣的目的。但是三種寫法上還是有區別的,主要的區別是在正則匹配的效能上。
第一種:使用rewrite指令,通過正則匹配所有的URI後再去掉開頭第一個/(反斜線)。
rewrite ^/(.*)$ https://www.hi-linux.com/$1;
第二種:同樣使用rewrite指令,不同的是通過$request_uri變數匹配所有的URI。
rewrite ^ https://www.hi-linux.com$request_uri? permanent;
這樣寫的好處是省去了去掉開頭第一個反斜線的過程,正則匹配上效能更優。
第三種:使用return指令,通過301狀態碼和$request_uri引數,直接告訴Nginx這是個301重定向和抓取指定URI。
return 301 https://www.hi-linux.com$request_uri;
這種方法是效能上最優的,因為rewrite指令有很多寫法和規則,執行完所有正則匹配後,Nginx 才會知道這是一個301永久重定向。
通過以上三種寫法介紹,我們可以看出return指令在301跳轉上比rewrite指令效能上更加有優勢。雖然在訪問量不大的情況下幾種寫法的效能表現上區別並不大,不過在海量訪問中一個小小的優化也能在提升業務系統性能上起到不小的作用喲!
原文來自微信公眾號:運維之美