手把手教你學會配置 nginx 的重定向

2021-10-24 08:10:03 字數 1929 閱讀 6678

首先說明兩個概念:位址重寫位址**.

位址重寫是為了實現位址的標準化. 舉個例子, 在位址列當中輸入www.baidu.comwww.baidu.cn最後都會被重寫到了

位址**是指在網路資料傳輸過程中資料分組到達路由器或橋接器後, 該裝置通過檢查分組位址並將資料**到最近的區域網的過程.

位址重寫和位址**的區別:

位址重寫會改變瀏覽器的位址, 使之變成瀏覽器最新的位址. 而位址**是不會改變瀏覽器的位址的.

位址重寫產生兩次請求, 而位址**只會有一次請求.

位址**一般發生在同一站點專案內部, 而位址重寫不受限制.

位址**的速度比位址重寫快.

1. 執行server塊的rewrite指令

2. 執行location匹配

3. 執行選定的location中的rewrite指令

如果其中某步uri被重寫, 則重新迴圈執行1-3, 直到找到真實存在的檔案; 迴圈超過10次, 則返回500 internal server error錯誤.

rewrite regex replacement [flag]
flag標誌位:

說明: 因為301和302不能簡單的只返回狀態碼, 還必須有重定向的uri, 這就是return指令無法返回301, 302的原因.

last vs break:

last一般寫在server和if中, 而break一般使用在location中.

break 不終止重寫後的url匹配, 即新的url會再從server走一遍流程, 而 last 終止重寫後的匹配.

break 和 last 都能阻止繼續執行後面的rewrite指令.

if指令與全域性變數

語法:

if(condition)
condition可以是下面的內容:

1.將到test環境的請求**到staging環境當中. 兩個環境的請求api一樣, 但是網域名稱不一樣. 一般是用來除錯web頁面.

這裡只是重點說明一下 location 的配置.

location /api/ 

proxy_pass

}

上述的配置同時解決了跨域帶來的問題. 如果沒有跨域的問題, 可以將add_headerproxy_hide_headerif

關指令部分去掉.

location /api/
將所有的請求都永久重定向到stage環境. 之所以選擇307/308方式, 是因為307/308重定向不會修改原來的請求方

法和引數.

使用這種方式最大的問題是, 每個請求都會傳送兩次. 一次是重定向(308), 一次是真正的請求.

location /api/
此種方式是使用臨時重定向(302) 的方式, 後續的請求會傳送get請求, 並且請求引數會被修改.

2.將請求的網域名稱統一化.

location /

手把手教你配置Ubuntu server伺服器 3

說回來,先解決基本問題再說 sudo vim etc network inte ces 修改如下部分 auto eth0 這個名稱每台機器不一樣,可以通過ifconfig a查詢 iface eth0 inet static address 192.168.0.117 選用同乙個網路下不衝突的ip ...

手把手教你認識並搭建Nginx

nginx engine x 是乙個高效能的 http 和 反向 伺服器,也是乙個 imap pop3 smtp 伺服器。nginx 是由 igor sysoev 為俄羅斯訪問量第二的 rambler.ru 站點開發的,它已經在該站點執行超過兩年半了。igor 將源 以類 bsd 許可證的形式發布。...

手把手教你認識並搭建Nginx

nginx engine x 是乙個高效能的 http 和 反向 伺服器,也是乙個 imap pop3 smtp 伺服器。nginx 是由 igor sysoev 為俄羅斯訪問量第二的 rambler.ru 站點開發的,它已經在該站點執行超過兩年半了。igor 將源 以類 bsd 許可證的形式發布。...