反向代理:讓Internet上的用戶能夠訪問局域網內的資源,中間設置一個代理服務器,以下所示,紅色圈是指局域網內的站點(myweb站點是咱們的站點,例如iis)。箭頭不能反過來web
正向代理:客戶端(咱們代理客戶端)訪問Internet上的站點。中間設置一個代理服務器,以下所示,紅色圈是指局域網內的客戶端(咱們的客戶端)。箭頭不能反過來。後端
總結:服務器
正向代理是指:咱們表明局域網客戶端,向Internet上獲取資源,中間正向代理。性能
反向代理是指:咱們表明局域網服務端,Internet上的客戶端請求資源,中間使用反向代理。url
反向代理是最多見的重要功能之一,應用普遍,涉及的配置指令比較多。ngx提供的反向代理也是比較高效的,它能同時接收客戶端鏈接由worker_processes指令和worker_connections指令決定。spa
反向代理與正向代理都有http塊,server塊或者location塊。區別是單獨配置server塊用來反向代理或正向代理。3d
講最重要的一個proxy_pass指令代理
1.proxy_pass指令code
被代理服務器的地址(分發到如:IIS),能夠是主機名稱,ip地址加端口號等形式。語法結構爲server
proxy_pass url;
傳輸協議一般是http://,或https://。例如
proxy_pass http://www.myweb.name/uri;
proxy_pass http://localhost:8080/uri;
proxy_pass http://192.168.2.211:8080/uri;
若是被代理服務器是一組服務器的話,能夠用upstream指令配置後端服務器組,作高可用負載分發,例如:
upstream proxy_svrs { server http://192.168.1.1:8001; server http://192.168.1.2:8001; server http://192.168.1.3:8001; } server { ... listen 80; server_name www.myweb.name; location / { proxy_pass proxy_svrs; } }
注意一點:在服務器組內指明瞭傳輸協議 http://, 在proxy_pass指令中就不須要指明瞭。反之若是服務器組內沒有https://,那麼 在proxy_pass指令中就須要指明,以下所示:
upstream proxy_svrs { server 192.168.1.1:8001; server 192.168.1.2:8001; server 192.168.1.3:8001; } server { ... listen 80; server_name www.myweb.name; location / { proxy_pass http://proxy_svrs; } }
當客戶端訪問http://www.myweb.name時,就會進入location中。再看一個示例:
server { ... listen 80; server_name www.myweb.name;
location /server/ { proxy_pass http://proxy_svrs01; }
location /
{
proxy_pass http://proxy_svrs; }
}
當客戶端訪問http://www.myweb.name/server時,就會匹配location /server/ 塊中。
參考
Nginx高性能Web服務器詳解 第7章