前端的工作過(guò)程里,本地開發(fā)、提供測(cè)試環(huán)境,總得有個(gè)用著順手的服務(wù)器軟件,這個(gè)場(chǎng)景里nginx很流行。
介紹兩個(gè)好用的配置項(xiàng):rewrite try_files @xxxx
rewrite
比較常見,主要用于將帶版本號(hào)的靜態(tài)文件路徑替換成本地文件路徑
例如人人網(wǎng)發(fā)布文件路徑里面包含一個(gè)a0000的版本號(hào),通過(guò)下面這句配置就能將http://xnimg.cn/a0001/js/base.js換成http://xnimg.cn/js/base.js直接影射到本地目錄結(jié)構(gòu)中。
復(fù)制代碼 代碼如下:
rewrite "^/a?([0-9]+)/(.*)" /$2 last;
try_files
嘗試在本地的多個(gè)路徑中查找需要的文件,如果依然沒找到才會(huì)返回404。下面配合@xxx配置實(shí)現(xiàn)一個(gè)更方便的功能。
location @xxx
這樣定義了一個(gè)可以供其他配置調(diào)用的“請(qǐng)求處理方法”(handler),結(jié)合try_files如果本地沒找到自動(dòng)去線上取回指定文件。
if ( $document_uri ~*"^/[ab]?([0-9]+)/(.*)"){ set $no_version_path /$2;}location / { try_files $document_uri $no_version_path =404; error_page 404 = @online; log_not_found off;}location @online{ proxy_pass http://$host:80/$request_uri}
第一個(gè)if語(yǔ)句是一個(gè)匹配,把$2第二個(gè)分組值(去掉版本號(hào)的路徑)保存到變量$no_version_path;
try_files的順序:有版本號(hào)的路徑、沒有版本號(hào)的路徑、如果404 調(diào)用@online;
@online中用$host,$request_uri這兩個(gè)nginx變量拼出請(qǐng)求的文件路徑直接代理請(qǐng)求到線上。
這樣配置的服務(wù)器,只需要在本地存放你所關(guān)心的幾個(gè)靜態(tài)文件,其他不需要調(diào)試的文件全部代理到線上,省得每次花時(shí)間更新自己不關(guān)心的工程代碼。
新聞熱點(diǎn)
疑難解答
圖片精選