Nginx 服務(wù)器的反向代理服務(wù)是其最常用的重要功能,問什么是反向代理,我們先用一句話說明什么是代理。
代理就是供給方和需求方的中間人,如房屋中介就是代理,中介把供給資源和需求資源統(tǒng)一化接口,讓供給和需求都面向單接口對接。這樣就可以讓需求和供給方減少操作成本。
在程序編寫過程中,接口就是代理,如我們定義一個vehicle的接口,抽象出方法,如run(),speed()方法等,調(diào)用者和實現(xiàn)者都面向接口,這樣會有一個比較快捷的交接效率。
什么是正反向代理呢?我們直接說反向代理,正向相反而已。
我們直接拿我們的服務(wù)端和客戶端來說,客戶端是需求方,服務(wù)端是供給方。nginx就是中介代理。nginx把供給方(如多個后端服務(wù)器)的信息統(tǒng)一化,讓需求方看就是一個站點。
如后臺有兩臺機器。
A服務(wù)器放著id為奇數(shù)的文章
B服務(wù)器放著id為偶數(shù)的文章
nginx對外提供的是www.cot.com/post/{id} 的地址。具體訪問哪個機器,nginx來做處理和轉(zhuǎn)發(fā)。這就是反向代理。
正向是以客戶端為內(nèi)容提供方,不過我們也很少用,這里不做介紹。
如何配置反向代理
我比較熟悉的是基礎(chǔ)的一個配置,在location中配置proxy_pass URL;
其它的方式還有很多,這里我們只記錄一個概念,需要的時候百度反向代理文檔即可。
location id=奇數(shù){
proxy_pass 服務(wù)器A; #如果id是奇數(shù),就去A機器尋找內(nèi)容
}
location id=偶數(shù){
proxy_pass 服務(wù)器B; #如果id是偶數(shù),就去B機器尋找內(nèi)容。
}
類似于這種偽代碼,其實也有負載均衡的效果。