Nginx配置中Location的語法規則 location [ = | ~ | ~* | ^~ | !~ | !~* ] /uri/{ … }
css
多個location配置的狀況下匹配順序爲:nginx
當有匹配成功時候,中止匹配,按當前匹配規則處理請求。web
location = / {
proxy_pass http://127.0.0.1:9090/
}
複製代碼
將全部請求直接轉發給服務器的9090端口。正則表達式
#目錄匹配
location ^~ /static/ {
root /webroot/static/;
}
#後綴匹配
location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ {
root /webroot/res/;
}
複製代碼
#將/account/開始的請求轉發給Account服務器
location /account/ {
proxy_pass http://127.0.0.1:8080/
}
#將/order/開始的請求轉發給Order服務器
location /order/ {
proxy_pass http://127.0.0.1:9090/
}
複製代碼
last
和break
實現URI重寫,瀏覽器地址欄不變。alias
指令必須用last
標記;使用proxy_pass
指令時,須要使用break
標記。last
標記在本條rewrite
規則執行完畢後,會對其所在server{......}標籤從新發起請求,而break
標記則在本條規則匹配完成後,終止匹配。例子只是爲了你們理解,不是實際場景。apache
服務器提供一個接口 /api/v1/access
, 終端用戶能夠經過瀏覽器頁面訪問, 也能夠經過公衆號訪問,也能夠經過App訪問。後端
需求來了,想要根據不一樣的渠道統計訪問數,咱們在終端調用接口的時候各自分配一個數字。api
不一樣終端在訪問接口時將數字拼在接口前面,如:/10000/api/v1/access
瀏覽器
Nginx須要把全部訪問請求轉到服務器,配置以下:服務器
location ~/([0-9]+)/(.*)$ {
rewrite /([0-9]+)/(.*)$ /$2 break;
proxy_pass http://127.0.0.1:9090;
}
複製代碼
$2 表示路徑中正則表達式匹配的第二個參數,也就是 (.*) 這部分。spa
好了,可能有朋友就問,這樣就能夠統計不一樣渠道的訪問量了? 答案確定是不行的麼,nginx這塊只是作了將不一樣渠道的請求轉發到同一個服務去,它並無作統計的工做。
統計的工做不屬於本片文章的內容,可是放心。 既然提到了這塊內容,實現方案仍是要給你們講的麼。
原理很簡單,Nginx的access
訪問日誌中記錄了全部請求記錄,咱們就能夠拿這個數據去作統計,我這裏僅說一種ELK
方案:就是將日誌數據推送到Elasticsearch中,而後就能夠在Kibana中作圖標展現這些指標了。想要了解ELK,請看個人另外一篇文章使用 ELK(Elasticsearch + Logstash + Kibana) 搭建日誌收集分析平臺。
廣告時間:關注個人公衆號【JAVA九點半課堂】,回覆資源領取2T技術資料。看完這些資料,保證你的薪資超過25k,快來領取吧!