Nginx的rewrite功能需要PCRE軟件的支持熊镣,即通過perl兼容正則表達(dá)式語句進(jìn)行規(guī)則匹配的预茄。rewrite是實(shí)現(xiàn)URL重寫的關(guān)鍵指令蚕甥,根據(jù)regex(正則表達(dá)式)部分內(nèi)容,重定向到replacement红氯,結(jié)尾是flag標(biāo)記幽污。
rewrite語法格式及參數(shù)語法說明如下:
rewrite <regex> <replacement> [flag];
關(guān)鍵字 正則 替代內(nèi)容 flag標(biāo)記
關(guān)鍵字:其中關(guān)鍵字error_log不能改變
正則:perl兼容正則表達(dá)式語句進(jìn)行規(guī)則匹配
替代內(nèi)容:將正則匹配的內(nèi)容替換成replacement
flag標(biāo)記:rewrite支持的flag標(biāo)記
flag標(biāo)記說明:
last #本條規(guī)則匹配完成后嚷辅,繼續(xù)向下匹配新的location URI規(guī)則
break #本條規(guī)則匹配完成即終止,不再匹配后面的任何規(guī)則
redirect #返回302臨時(shí)重定向距误,瀏覽器地址會(huì)顯示跳轉(zhuǎn)后的URL地址
permanent #返回301永久重定向簸搞,瀏覽器地址欄會(huì)顯示跳轉(zhuǎn)后的URL地址
例子:
server {
listen 80;
server_name abc.com www.abc.com;
if ( $host != 'www.abc.com' ) {
rewrite ^/(.*) http://www.abc.com/$1 permanent;
}
location / {
root /data/www/www;
index index.html index.htm;
}
error_log logs/error_www.abc.com.log error;
access_log logs/access_www.abc.com.log main;
}
#設(shè)置限制訪問
#限制同一ip每秒訪問20次
limit_req_zone $binary_remote_addr zone=allips:10m rate=20r/s;
#ip限制并發(fā)數(shù)
limit_conn_zone $binary_remote_addr zone=addr:10m;
#服務(wù)器限制并發(fā)總數(shù)
limit_conn_zone $server_name zone=perserver:10m;
#brust的意思就是,如果第1秒准潭、2,3,4秒請求為19個(gè)趁俊,第5秒的請求為25個(gè)是被允許的。
#但是如果你第1秒就25個(gè)請求后面的5個(gè)請求就會(huì)被限制惋鹅,返回503錯(cuò)誤则酝。
#nodelay,如果不設(shè)置該選項(xiàng)闰集,嚴(yán)格使用平均速率限制請求數(shù),
#也就是說如果你設(shè)置rate=120r/m,相當(dāng)于每秒只允許處理2個(gè)請求
limit_req zone=allips burst=5 nodelay;
#連接數(shù)限制
limit_conn addr 10;
limit_conn perserver 50000;
#連接限速
limit_rate 500k;
#限制ip
allow 132.35.75.0/24;
#deny all;