乐清谧种大药房有限公司

Menu

Nginx泛域名http默認跳轉(zhuǎn)https

網(wǎng)站建設(shè) 錄入時間 2023-09-19 閱讀次數(shù) 無雙建站 wordpress翻譯插件

基于全球的網(wǎng)絡安全,現(xiàn)在瀏覽器基本都將默認的HTTP站點標識為不安全,很多站點都將HTTP網(wǎng)站添加SSL證書,切換至HTTPS加密協(xié)議。

Nginx作為高性能的HTTP和反向代理web服務,一般作為服務入口提供負載均衡和流量分發(fā),因此我們在Nginx上添加SSL證書,實現(xiàn)HTTPS訪問;同時為保證用戶無感知,需要配置HTTP默認跳轉(zhuǎn)HTTPS。

下面我們來解析下泛域名下的http默認跳轉(zhuǎn)https。

rewrite跳轉(zhuǎn)

server{
    listen 80;
    server_name *.test.cn;
    rewrite ^(.*)$ https://$server_name$1 permanent;
}

此時瀏覽器訪問報錯:

Nginx泛域名http默認跳轉(zhuǎn)https

其實此時使用rewrite跳轉(zhuǎn)在單域名是沒有問題,但是在多域名或泛域名下是有問題的,我們此時使用在nginx安裝echo-nginx-modulem模塊以調(diào)試(模塊安裝忽略)。

調(diào)試過程

1.依次打印nginx內(nèi)置變量server_name,host,http_host

server{
    listen 80;
    server_name *.test.cn;
    location / {
        default_type 'text/plain';
        echo $server_name;
        echo $host;
        echo $http_host;
    }
}

瀏覽器訪問:

Nginx泛域名http默認跳轉(zhuǎn)https

2.錯誤分析

從變量打印來看:

server_name值為*.test.cn

host值為www.test.cn

http_host值為www.test.cn

此時雖然我們輸入域名為www.test.cn,但實際rewrite的url為:https://*.test.cn,因此訪問報錯。

注意:如果你的nginx的域名為"server_name a.test.cn *.test.cn

3.解決方式

根據(jù)變量值,我們需要更改rewrite后的url為:

 rewrite ^(.*)$ https://$host$1 permanent;
或
 rewrite ^(.*)$ https://$http_host$1 permanent;

return

return除了支持直接跟狀態(tài)碼,還可以跟字符串或者url鏈接,用于返回字符串或url鏈接。

http默認跳轉(zhuǎn)為https配置如下:

server{
    listen 80;
    server_name *.test.cn;
    return 301 https://$http_host$request_uri;
}

總結(jié)

return和rewrite雖然都實現(xiàn)了跳轉(zhuǎn),但是是有區(qū)別的:

1.return 指令簡單高效,建議盡量使用 return,而不是 rewrite;

2.return 指令告訴 Nginx 停止處理請求,直接返回 301 (Moved Permanently) 代碼并跳轉(zhuǎn)重寫后的地址;

3.rewrite指定并不會立即結(jié)束Nginx的處理流程,會根據(jù)重寫后的地址繼續(xù)匹配相應的location,除非使用break結(jié)束。

擴展

如果使用Nginx+Lua,你會發(fā)現(xiàn)在整個Nginx的訪問流程中,return指令處于rewrite階段,而rewrite指令處于access階段,因此return的優(yōu)先級是高于ngx_limit_req訪問頻率限制的。

【版權(quán)聲明】:本站內(nèi)容來自于與互聯(lián)網(wǎng)(注明原創(chuàng)稿件除外),供訪客免費學習需要。如文章或圖像侵犯到您的權(quán)益,請及時告知,我們第一時間刪除處理!謝謝!

無雙科技
如何獲取外貿(mào)詢盤和訂單?
網(wǎng)站建設(shè)咨詢:13534259410

經(jīng)典客戶案例展示

熱門服務
眾多企業(yè)的選擇

深圳無雙科技 - 專注于高端網(wǎng)站建設(shè)、網(wǎng)站設(shè)計開發(fā)、品牌網(wǎng)站制作

咨詢電話:13534259410

售后服務:13534259410  (7×24小時)
在線 Q Q:253849310 (售前咨詢)

深圳網(wǎng)站建設(shè)咨詢
【掃一掃咨詢】
  • 掃一掃 在線咨詢
    無雙科技官方公眾號
  • 響應式客戶端
    掃一掃 關(guān)注好友
體驗創(chuàng)新服務

深圳無雙科技,專注于深圳網(wǎng)站建設(shè)、深圳網(wǎng)站設(shè)計、深圳網(wǎng)站制作。
服務客戶超3000家,一站式網(wǎng)站建設(shè)及推廣營銷解決方案提供商。
我們的價值觀:誠信、坦誠、盡責、創(chuàng)新。期待與您合作!

您好,很高興為您服務 ^_^