您好,登錄后才能下訂單哦!
正向代理 是一個位于客戶端和原始服務器(origin server)之間的服務器,為了從原始服務器取得內容,客戶端向代理發送一個請求并指定目標(原始服務器),然后代理向原始服務器轉交請求并將獲得的內容返回給客戶端。客戶端必須要進行一些特別的設置才能使用正向代理。
反向代理正好相反,對于客戶端而言它就像是原始服務器,并且客戶端不需要進行任何特別的設置。客戶端向反向代理的命名空間(name-space)中的內容發送普通請求,接著反向代理將判斷向何處(原始服務器)轉交請求,并將獲得的內容返回給客戶端,就像這些內容原本就是它自己的一樣。
簡單的區別方法:正向代理就是我們在瀏覽器可以設置的代理服務器,主動權在瀏覽者手里。比如我們有時候要查閱一些資料,被國內墻掉了,這時候我可以在國外的服務器上搭建一個nginx正向代理服務器,然后我們就可以通過瀏覽器設置代理服務器,來×××了。反向代理,是瀏覽者不知情的,服務器端自己假設的。
server{
resolver 8.8.8.8;
resolver_timeout 30s;
listen 82;
location / {
proxy_pass http://$http_host$request_uri;
proxy_set_header Host $http_host;
proxy_buffers 256 4k;
proxy_max_temp_file_size 0;
proxy_connect_timeout 30;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 301 1h;
proxy_cache_valid any 1m;
}
}
1、不能有hostname。
2、必須有resolver, 即dns,即上面的8.8.8.8,超時時間(30秒)可選。
3、配置正向代理參數,均是由 Nginx 變量組成。
[plain] view plain copy
proxy_pass $scheme://$host$request_uri;
proxy_set_header Host $http_host;
4、配置緩存大小,關閉磁盤緩存讀寫減少I/O,以及代理連接超時時間。
[plain] view plain copy
proxy_buffers 256 4k;
proxy_max_temp_file_size 0;
proxy_connect_timeout 30;
5、配置代理服務器 Http 狀態緩存時間。
[plain] view plain copy
proxy_cache_valid 200 302 10m;
proxy_cache_valid 301 1h;
proxy_cache_valid any 1m;
配置好后,重啟nginx,以瀏覽器為例,要使用這個代理服務器,則只需將瀏覽器代理設置為http://+服務器ip地址+:+82(82是剛剛設置的端口號)即可使用了。
下面是以負載均衡為例子的反向代理。
[plain] view plain copy
http {
# 省略了前面一般的配置,直接從負載均衡這里開始
# 設置地址池,后端3臺服務器
upstream http_server_pool {
server 192.168.1.2:8080 weight=2 max_fails=2 fail_timeout=30s;
server 192.168.1.3:8080 weight=3 max_fails=2 fail_timeout=30s;
server 192.168.1.4:8080 weight=4 max_fails=2 fail_timeout=30s;
}
# 一個虛擬主機,用來反向代理http_server_pool這組服務器
server {
listen 80;
# 外網訪問的域名
server_name www.test.com;
location / {
# 后端服務器返回500 503 404錯誤,自動請求轉發到upstream池中另一臺服務器
proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
proxy_pass http://http_server_pool;
proxy_set_header Host www.test.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
access_log logs/www.test.com.access.log combined;
}
}
最簡單的反向代理演示(在一臺服務器上做代理服務器,將http請求轉發到另一臺IIS服務器上,通過二級域名形式訪問。)編輯vim nginx.conf
[plain] view plain copy
server {
listen 80;
server_name test.zhoumengkang.com;
location / {
proxy_pass http://121.199.**.*:80;
}
}
1、輪詢(默認),
每個請求按時間順序逐一分配到不同的后端服務器,如果后端服務器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結果分配,這樣每個訪客固定訪問一個后端服務器,可以解決session的問題。
upstream bakend { ip_hash; server 192.168.0.14:88; server 192.168.0.15:80; }12345
3、fair(第三方),
按后端服務器的響應時間來分配請求,響應時間短的優先分配。
upstream backend { server server1; server server2; fair; }12345
4、url_hash(第三方)
按訪問url的hash結果來分配請求,使每個url定向到同一個后端服務器,后端服務器為緩存時比較有效。
例:在upstream中加入hash語句,server語句中不能寫入weight等其他的參數,hash_method是使用的hash算法
upstream backend { server squid1:3128; server squid2:3128; hash $request_uri; hash_method crc32; }123456
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。