nginx中每一個host都會被包含在一個server{}中,在編寫nginx規則時,它支援一些基本的正則。
ex: server_name *.abc.com abc.com
在配置伺服器的時候,常用的有:
1、負載均衡;
2、正向、反向代理;
3、跳轉、反盜鍊;
4、請求、檔案緩存;
5、别名映射、URL跳轉。
以一具體應用為例:假設網站上要增設一個音樂搜尋功能。
最快最簡單的方式是使用soso或是百度的音樂搜尋,擷取音樂的真實位址,自己寫一個swf版本的音樂播放器,然後就能實作音樂搜尋、試聽和儲存音樂清單的功能了。實際上百度和soso對外站抓取其音樂網址都做了處理,不是那麼輕易就可以獲得音樂的真實位址。
其中它最重要的配置是這一段,首先是解決crossdomain.xml擷取的問題,然後是“欺騙”百度伺服器,讓百度的音樂伺服器響應請求并傳回結果。
對location進行正則比對通過 “~”實作,注意兩邊是有空格的。location ~ ^….$ {}
或者這樣location /res/xxx/ {},正則支援^、$、?、[]、\d、\w、.、*、+、|等元字元。
在if語句中,可以使用set指令将捕獲分組進行指派處理,例如:set $path $1; set $file $2;
為了保護資源和減少網絡帶寬的消耗,一般網站都會對圖檔使用防盜鍊和對圖檔的請求進行緩存設定。
請求緩存,隻解決了請求問題,而如果每次都清空緩存或是各個地方的請求都過來,就算設定緩存,壓力也大。對硬碟的IO讀寫也将較為頻繁,是以一般特殊的檔案對使用檔案緩存。
在我使用nginx中(版本号:V1.0.2)中,靜态資源是不允許使用post方式進行請求的,否則将傳回405錯誤(請求方式不被允許)。一般來講,設計合理的情況下,是不需要使用post來請求靜态資源的,而如果遇到了,還是需要去解決它,但盡量還是避免這種情況的發生。
除了暫時不能識别265g的驗證碼外,比如清空它的cookie,快速送出都很友善,以後有空要研究下破驗證碼,這樣以後就完全自動化了^_^
1、使用root,last和break都可以用/不用
2、使用alias,隻有last可以被用/不用
3、使用proxy_pass,要使用break/不用。
4、在rewrite中它們差別較大
==> break可以了解為switch中的break,而last可以了解為continue,一個是跳出server{}的比對規則,一個還将繼續比對之後的規則。
無論使用last還是break,浏覽器上面的位址欄不能被改變,而另外兩個臨時重定向302--redirect、永久重定向--permanent将改變浏覽器上位址欄。
最後列出一份常用自己常用的nginx配置模闆