首先說明兩個概念:位址重寫和位址**.
位址重寫是為了實現位址的標準化. 舉個例子, 在位址列當中輸入www.baidu.com
和www.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指令與全域性變數1.將到語法:
condition可以是下面的內容:if(condition)
test
環境的請求**到staging
環境當中. 兩個環境的請求api一樣, 但是網域名稱不一樣. 一般是用來除錯web頁面.
這裡只是重點說明一下 location 的配置.
location /api/
proxy_pass
}
上述的配置同時解決了跨域帶來的問題. 如果沒有跨域的問題, 可以將add_header
和proxy_hide_header
和if
相關指令部分去掉.
location /api/
將所有的請求都永久重定向到stage
環境. 之所以選擇307/308
方式, 是因為307/308
重定向不會修改原來的請求方法和引數.
使用這種方式最大的問題是, 每個請求都會傳送兩次. 一次是重定向(308), 一次是真正的請求.
location /api/
此種方式是使用臨時重定向(2.將請求的網域名稱統一化.302
) 的方式, 後續的請求會傳送get
請求, 並且請求引數會被修改.
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 許可證的形式發布。...