nginx負載均衡和反向代理的區別

nginx負載均衡和反向代理的區別有:1、實現負載均衡一定要需要反向代理;2、反向代理主要是緩存東西,而負載均衡則是減少高併發情況;3、負載均衡是做反向代理的目的之一。

下面是詳細介紹:

負載均衡需要通過反向代理來實現。

反向代理就是指nginx作爲前端服務器,將請求轉發到後端,再將後端服務器的結果,返回給客戶端。

它在中間做了一個代理服務器的角色。

負載均衡對反向代理增加了一些策略,因爲後端是多臺服務器,nginx會根據設定的策略將請求轉發給一個相對空閒的服務器,對負載進行分流,減輕服務器壓力。

示例

負載均衡

worker_processes 1;
events {
worker_connections 1024;
}
http{
upstream lxx {//默認是80端口
server 192.168.0.62 weight=2;
server 192.168.0.161 weight=3;
}
server {
listen 80;
location / {
proxy_pass http://lxx;
}
}
}

反向代理

worker_processes 1;
events {
worker_connections 1024;
}
http{
upstream lxx {//默認是80端口
server 192.168.0.62 weight=2;
server 192.168.0.161 weight=3;
}
server {
listen 80;
location / {
proxy_pass http://lxx;
#Proxy Settings
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_max_temp_file_size 0;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}
}

從配置上來看,它只是多了Proxy Settings下面的一些設置參數!但從實際的表現結果來看,感覺區別並不是很大,負載均衡已經可以把用戶的請求按照相關算法和規則發送到web集羣的某臺機器,而反向代理也是實現瞭如此的功能,它們的具體的區別在哪裏?

答:負載均衡是做反向代理的目的之一。

緩存,反向代理主要是緩存東西,以便減少併發操作。

做了反向代理才能實現負載均衡。負載均衡是做反向代理的目的之一。

如果沒有反向代理,壓力直接放到一個單一的http server上。而有了反向代理,典型情況下,一個ngnix做反向代理,後面有若干個http Server。所有的流量想到ngnix,這個東西根據配置的策略,或者輪轉,或者隨機或者壓力分流,把流量導向給後面的Http server。從而達到負載均衡。

反向代理就是後端服務不直接對外暴露,請求首先發送到nginx,然後nginx將請求轉發到後端服務器,比如tomcat等。如果後端服務只有一臺服務器,nginx在這裏只有一個作用就是起到了代理後端服務接收請求的作用,稱之爲反向代理。

可是在現實的應用場景中,一臺後端服務器出現單點故障的概率很大或者單臺機器的吞吐量有限,無法承擔過多請求。這時候就需要在nginx後端配置多臺服務器,利用nginx內置的規則講請求轉發到後端不同的機器上。這時候就起到了負載均衡的作用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章