Nginx之十 代理服務
阿新 • • 發佈:2018-11-17
一.正向代理
1.概念
正向代理最大的特點是客戶端非常明確要訪問的伺服器地址;伺服器只清楚請求來自哪個代理伺服器,而不清楚來自哪個具體的客戶端;正向代理模式遮蔽或者隱藏了真實客戶端資訊。正向代理是訪問外部網路。比如國內訪問不到的網址,通過代理訪問。
2.指令
指令語法 | 說明 |
---|---|
resolver address … [valid =time] | 該指令用於指定DNS伺服器的IP地址,DNS伺服器的主要功能解析域名,將域名解析為IP地址。 address: 表示 DNS伺服器的IP地址,如果不指定埠,預設是35 time: |
resolver_timeout time | 該指令用於設定DNS伺服器域名解析超時的時間 |
proxy_pass URL | 這個指令用來設定代理伺服器的協議和地址,這個不僅僅用於Nginx伺服器的代理服務,更主要的是應用於反向代理伺服器 URL即為設定的代理伺服器的協議和地址 |
3.正向代理例子
... server { resolver 8.8.8.8; #設定的DNS伺服器為8.8.8.8,使用預設埠53 listen 82; #代理服務監聽的埠是82 location / { proxy_pass http://$http_host$request_uri; #這裡是代理伺服器地址,$http_host$request_uri這兩個是Nginx配置自動獲取的主機和URI的變數,一般配置不要改變該指令的配置,意思就是這一行就是寫死的。 } } 注意點:正向代理不支援代理https站點,這裡不能使用server_name指令,並且必須使用resolver指令,用來處理解析接收到的域名。
二、反向代理
1.概念
反向代理(Reverse Proxy)方式是指以代理伺服器來接受Internet上(客戶端)的連線請求,然後將請求轉發給內部網路上的伺服器;並將從伺服器上得到的結果返回給Internet上請求連線的客戶端,此時代理伺服器對外就表現為一個伺服器。
2.反向代理基本設定的21個指令
指令語法 | 說明 |
---|---|
proxy_pass URL | 設定被代理伺服器的地址,URL可以主機名,IP加埠號的形式,傳輸協議通常是"http"、“https://”,URL也可以是upstream設定的一組伺服器。 注意的是如果upstream組中的伺服器沒有使用“http://”或者“https://”那麼 proxy_pass就需要新增這個協議。 注意點一:https/http的寫法 upstream proxy_sers { server 192.168.123.1/uri; server 192.168.123.2/uri; server 192.168.123.3/uri; } server{ listen 80; server_name location / { proxy_pass http://proxy_sers; #server中指明 http:// 在proxy_pass就不需要指定,這裡寫了,那麼upstream裡面就不需要了 } } 注意點二: 被代理的網址是否包含URI,如果沒有包含就不會改變原來的URI,否則就會用新的URI代替原來的URI server{ listen 80; server_name www.myweb.com; location /server/ { proxy_pass http://123.11.11.1; # 這裡網址沒有使用URI,所以訪問www.myweb.com/server/的時候,會代理到 http://123.11.11.1/server/。 如果這裡時候使用的是proxy_pass http://123.11.11.1/user/ 那麼當同樣訪問的原來這個網址的時候,就直接會替換掉原來的URI(/server/),代理到 http://123.11.11.1/user/ 上去 } } |