Reserve proxy by Nginx
使用Nginx作為反向代理(reserve proxy)的設定真的簡單很多,相較於Squid的複雜設定,Nginx比較直觀。使用反向代理的好處很多,尤其可做load balance,或虛擬化的時候,手上不可能有那麼多public ip可用,讓一個public ip可運作多個不同的domain name成為可行方案。
廢話不多說,基本設定如下:
或者可以定義一個upstream區塊。upstream是一個server的集合,一行一個server,多個server作round-robin,也可以定義權重(weight)。upstream在設定load balance時使用較多,範例如下:
廢話不多說,基本設定如下:
server { listen 80; server_name www.domain.com; location / { proxy_pass http://x.x.x.x:port; } }定義一個server區塊,server區塊可以定義一個virtual host,熟悉apache的人應能容易的理解這部份。上面範例讓virtual host監聽80 port,並且request的host domain是www.domain.com。location區塊會去比對URL的path,並不會去理會query的部份,有時候我們會看到location後面接如 ~ 或 ~* 的符號,location是允許使用regular express,~代表case sensitive matching,~*代表case insensitive matching,例如:location ~ ^/[a-z]{4}$,意思只接受4個小寫英文字,location ~* ^/[a-z]{4$}則不分大小寫,更多的說明請看這裡。
或者可以定義一個upstream區塊。upstream是一個server的集合,一行一個server,多個server作round-robin,也可以定義權重(weight)。upstream在設定load balance時使用較多,範例如下:
upstream siteName { server x.x.x.x:port weight=1; server x.x.x.x:port; ... } server { listen 80; server_name www.domain.com; location / { proxy_pass http://siteName; } }以上就是Nginx做反向代理的基本設定,有時候做反向代理會用到cache機制以提高server的回應速度和節省backend server的工作量,可以參考官網的範例Reverse Proxy with Caching。建議可以看看這篇基本介紹的文章Nginx Primer,讀完可以對Nginx有基本的認識。
留言