一.介紹 反向代理:讓Internet上的用戶可以訪問區域網內的資源,中間設置一個代理伺服器,如下所示,紅色圈是指區域網內的站點(myweb站點是我們的站點,例如iis)。箭頭不能反過來 正向代理:客戶端(我們代理客戶端)訪問Internet上的站點。中間設置一個代理伺服器,如下所示,紅色圈是指局域 ...
一.介紹
反向代理:讓Internet上的用戶可以訪問區域網內的資源,中間設置一個代理伺服器,如下所示,紅色圈是指區域網內的站點(myweb站點是我們的站點,例如iis)。箭頭不能反過來
正向代理:客戶端(我們代理客戶端)訪問Internet上的站點。中間設置一個代理伺服器,如下所示,紅色圈是指區域網內的客戶端(我們的客戶端)。箭頭不能反過來。
總結:
正向代理是指:我們代表區域網客戶端,向Internet上獲取資源,中間正向代理。
反向代理是指:我們代表區域網服務端,Internet上的客戶端請求資源,中間使用反向代理。
反向代理是最常見的重要功能之一,應用廣泛,涉及的配置指令比較多。ngx提供的反向代理也是比較高效的,它能同時接收客戶端連接由worker_processes指令和worker_connections指令決定。
反向代理與正向代理都有http塊,server塊或者location塊。區別是單獨配置server塊用來反向代理或正向代理。
二.反向代理的基本設置的21個指令
講最重要的一個proxy_pass指令
1.proxy_pass指令
被代理伺服器的地址(分發到如:IIS),可以是主機名稱,ip地址加埠號等形式。語法結構為
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章