1. 程式人生 > >Nginx之十 代理服務

Nginx之十 代理服務

一.正向代理

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
www.form1.cn
;
 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/ 上去
 }
}

指令可以參考 https://www.form1.cn/linux-nginx-37.html