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內置的規則講請求轉發到后端不同的機器上。這時候就起到了負載均衡的作用。