nginx服務的rewrite
nginx后端服務的指令
1)upstream指令 :設置后端服務器組的主要指令
Upstream name {}
2)server指令:用於設定組內的服務器
3)Ip_hash指令:
該指令用於實現會話保持功能,將某個客戶端段請求多次重定向到組內同一台服務器上,保證客戶端與服務器之間建立穩定的會話,只有當該服務器處於無效的時候,客戶端的請求才會被下一個服務器接收
例子:
upstream backend {
ip_hash
server server1.example.com
server server2.example.com
}
rewrite重寫
Rewrite 主要的功能就是實現URL的重寫,Nginx的Rewrite規則采用Pcre,perl兼容正則表達式的語法規則匹配,如果需要Nginx的Rewrite功能,在編譯Nginx之前,需要編譯安裝PCRE庫。
通過Rewrite規則,可以實現規范的URL、根據變量來做URL轉向及選擇配置。
1)地址轉發和地址重寫
地址轉發后,客戶端瀏覽器的地址顯示是不變的,而地址重寫后客戶端瀏覽器地址欄的地址會轉變為服務器確定的位置;
在一次地址轉發的過程中,只產生一次網絡請求,而地址轉寫的過程中一般會產生兩次請求;
2)rewrire指令
該指令通過正則表達式的使用用來改變URI。可以同時存在一個或者多個指令,按順序依次對URL進行匹配和處理
例子: rewrite myweb,com http://neweb.com/premanent
3)rewrite的使用
域名跳轉
例1:
server
{
listen 80;
server_name jump.myweb.com
rewrite ^/ http://jump.myweb.info/;
}
客戶端訪問http://jump.myweb.name時URL將被nginx服務器重寫為http://jump.myweb.info/,客戶端得到的數據實際上也是有http://jump:myweb.info相應的
例2)
server {
listen 80
server_name jump.myweb.com jump.myweb.info;
if ($host ~ myweb\.info) ##正則表達式中的.要用\轉義
{
rewrite ^(.*) http://jump.myweb.name$1 permanent;#多級域名跳轉
}
客戶端訪問http://jump.myweb.info/reqsoure的時候。URL被重寫為http://jump.myweb.name/reqsource,客戶端的數據實際上由http://jump.myweb.name響應的。
例3)
server {
listen 80
server_name jump1.myweb.com
if ($http_host ~* ^(.*)\.myweb\.name$)
{
rewrite ^(.*) http://jump.myweb.name$1
break
}
}
客戶端訪問http://jump.myweb.name/reqsource時,URL將被重寫http:/jump.myweb.name/reqsource,實現了三級域名跳轉