溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

nginx的正向代理和反向的區(qū)別及配置

發(fā)布時間:2020-07-04 16:29:26 來源:網(wǎng)絡(luò) 閱讀:1487 作者:Taxing祥 欄目:建站服務(wù)器

1.正向代理的概念

正向代理 是一個位于客戶端和原始服務(wù)器(origin server)之間的服務(wù)器,為了從原始服務(wù)器取得內(nèi)容,客戶端向代理發(fā)送一個請求并指定目標(biāo)(原始服務(wù)器),然后代理向原始服務(wù)器轉(zhuǎn)交請求并將獲得的內(nèi)容返回給客戶端??蛻舳吮仨氁M(jìn)行一些特別的設(shè)置才能使用正向代理。


2.反向代理的概念

反向代理正好相反,對于客戶端而言它就像是原始服務(wù)器,并且客戶端不需要進(jìn)行任何特別的設(shè)置??蛻舳讼蚍聪虼淼拿臻g(name-space)中的內(nèi)容發(fā)送普通請求,接著反向代理將判斷向何處(原始服務(wù)器)轉(zhuǎn)交請求,并將獲得的內(nèi)容返回給客戶端,就像這些內(nèi)容原本就是它自己的一樣。
簡單的區(qū)別方法:正向代理就是我們在瀏覽器可以設(shè)置的代理服務(wù)器,主動權(quán)在瀏覽者手里。比如我們有時候要查閱一些資料,被國內(nèi)墻掉了,這時候我可以在國外的服務(wù)器上搭建一個nginx正向代理服務(wù)器,然后我們就可以通過瀏覽器設(shè)置代理服務(wù)器,來×××了。反向代理,是瀏覽者不知情的,服務(wù)器端自己假設(shè)的。

1.nginx正向代理配置


  1. server{  

  2.         resolver 8.8.8.8;  

  3.         resolver_timeout 30s;   

  4.         listen 82;  

  5.         location / {  

  6.                 proxy_pass http://$http_host$request_uri;  

  7.                 proxy_set_header Host $http_host;  

  8.                 proxy_buffers 256 4k;  

  9.                 proxy_max_temp_file_size 0;  

  10.                 proxy_connect_timeout 30;  

  11.                 proxy_cache_valid 200 302 10m;  

  12.                 proxy_cache_valid 301 1h;  

  13.                 proxy_cache_valid any 1m;  

  14.         }  

  15. }  

1、不能有hostname。 


2、必須有resolver, 即dns,即上面的8.8.8.8,超時時間(30秒)可選。 
3、配置正向代理參數(shù),均是由 Nginx 變量組成。 

[plain] view plain copy

  1. proxy_pass $scheme://$host$request_uri;    

  2. proxy_set_header Host $http_host;    

4、配置緩存大小,關(guān)閉磁盤緩存讀寫減少I/O,以及代理連接超時時間。  

[plain] view plain copy

  1. proxy_buffers 256 4k;    

  2. proxy_max_temp_file_size 0;    

  3. proxy_connect_timeout 30;    

5、配置代理服務(wù)器 Http 狀態(tài)緩存時間。  

[plain] view plain copy

  1. proxy_cache_valid 200 302 10m;    

  2. proxy_cache_valid 301 1h;    

  3. proxy_cache_valid any 1m;   

配置好后,重啟nginx,以瀏覽器為例,要使用這個代理服務(wù)器,則只需將瀏覽器代理設(shè)置為http://+服務(wù)器ip地址+:+82(82是剛剛設(shè)置的端口號)即可使用了。


2.nginx反向代理服務(wù)器的配置

下面是以負(fù)載均衡為例子的反向代理。



[plain] view plain copy

  1. http {  

  2. #   省略了前面一般的配置,直接從負(fù)載均衡這里開始  

  3. #   設(shè)置地址池,后端3臺服務(wù)器  

  4.     upstream http_server_pool {  

  5.         server 192.168.1.2:8080 weight=2 max_fails=2 fail_timeout=30s;  

  6.         server 192.168.1.3:8080 weight=3 max_fails=2 fail_timeout=30s;  

  7.         server 192.168.1.4:8080 weight=4 max_fails=2 fail_timeout=30s;  

  8.     }  

  9. #   一個虛擬主機(jī),用來反向代理http_server_pool這組服務(wù)器  

  10.     server {  

  11.         listen       80;  

  12. #       外網(wǎng)訪問的域名          

  13.         server_name  www.test.com;   

  14.         location / {  

  15. #           后端服務(wù)器返回500 503 404錯誤,自動請求轉(zhuǎn)發(fā)到upstream池中另一臺服務(wù)器  

  16.             proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;  

  17.             proxy_pass http://http_server_pool;  

  18.             proxy_set_header Host www.test.com;  

  19.             proxy_set_header X-Real-IP $remote_addr;  

  20.             proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;  

  21.         }  

  22.         access_log  logs/www.test.com.access.log  combined;  

  23.     }  

  24. }  


最簡單的反向代理演示(在一臺服務(wù)器上做代理服務(wù)器,將http請求轉(zhuǎn)發(fā)到另一臺IIS服務(wù)器上,通過二級域名形式訪問。)編輯vim nginx.conf



[plain] view plain copy

  1. server {  

  2.     listen    80;  

  3.     server_name test.zhoumengkang.com;  

  4.     location / {  

  5.         proxy_pass http://121.199.**.*:80;  

  6.     }  

  7. }  

upstream 幾種分配(調(diào)度,分派)示例

1、輪詢(默認(rèn)), 
每個請求按時間順序逐一分配到不同的后端服務(wù)器,如果后端服務(wù)器down掉,能自動剔除。

upstream bakend {    server 192.168.0.14 weight=10;    server 192.168.0.15 weight=10;    server 192.168.0.16 down;    server 192.168.0.17 backup;
}123456

2、ip_hash, 
每個請求按訪問ip的hash結(jié)果分配,這樣每個訪客固定訪問一個后端服務(wù)器,可以解決session的問題。

upstream bakend {
    ip_hash;
    server 192.168.0.14:88;    
    server 192.168.0.15:80;
}12345

3、fair(第三方), 
按后端服務(wù)器的響應(yīng)時間來分配請求,響應(yīng)時間短的優(yōu)先分配。

upstream backend 
{    
server server1;    
server server2;
    fair;
}12345

4、url_hash(第三方) 
按訪問url的hash結(jié)果來分配請求,使每個url定向到同一個后端服務(wù)器,后端服務(wù)器為緩存時比較有效。 
  例:在upstream中加入hash語句,server語句中不能寫入weight等其他的參數(shù),hash_method是使用的hash算法

upstream backend {
    server squid1:3128;
    server squid2:3128;    
    hash $request_uri;    
    hash_method crc32;
}123456


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI