有時(shí)候需要訪問服務(wù)器上的一些靜態(tài)資源,比如掛載其他設(shè)備上的圖片到本地的目錄,而本地的目錄不在nginx根目錄下,這個(gè)時(shí)候就需要簡(jiǎn)單的做一下目錄映射來解決,比如想通過瀏覽器http://ip/image/2016/04/29/10/abc.jpg訪問到系統(tǒng)目錄/image_data/2016/04/29/10/abc.jpg需要在nginx.conf中對(duì)應(yīng)的server {}下添加location規(guī)則,配置如下:
location /image/ {
root /;
rewrite ^/image/(.*)$ /image_data/$1 break;
}
location /image/設(shè)置服務(wù)器攔截含有/image/的請(qǐng)求,實(shí)際上范圍根據(jù)實(shí)際情況確定精確度
root /;設(shè)定作用的根目錄,rewrite就是真正的跳轉(zhuǎn)規(guī)則,設(shè)置以image為開頭的請(qǐng)求跳轉(zhuǎn)到/image_data開頭的根目錄,后面的參數(shù)原封不動(dòng)的添加過去,這樣就實(shí)現(xiàn)了目錄的映射,
使用上面的規(guī)則可以很方便的映射到本地指定的多個(gè)用于靜態(tài)訪問的目錄
保存之后使用 ./nginx -s reload 重新載入配置文件,訪問指定的url就訪問到了
另外還可以靈活配置精確代理,比如代理某一個(gè)訪問路徑,比如我們?cè)L問http://ip/abc/bcd/123.ico這時(shí)候我們映射到/web/host1/123.ico那么可以配置如下規(guī)則:
location /abc/bcd/123.ico {
root /;
rewrite ^/abc/bcd/123.ico$ /web/host1/123.ico break;
}
以上就實(shí)現(xiàn)了精確地路徑代理,注意后面的/web/host1屬于文件系統(tǒng)路徑,而不是web主機(jī)的虛擬目錄,因?yàn)樯厦鎟oot設(shè)置的是根目錄,如果沒有指定root那么以前面的server塊中指定的全局root值為準(zhǔn),每個(gè)location塊中屬性的作用域只是這一個(gè)塊中;
另外可以代理多個(gè)路徑可以通過web真實(shí)路徑訪問也可以使用代理路徑訪問,從而根據(jù)不同的業(yè)務(wù)需求設(shè)置代理,那么nginx本身就可以實(shí)現(xiàn)很多實(shí)用并且好用的功能
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。