最近在看nginx時候發現有配置文件里面有兩個參數upstream(負載均衡)和proxy(反向代理)。不是很明白是什么意思,于是就百度了下,網上的說法不是太明白,但是根據網友的回答 下面給出我的理解內容:
反向代理
代理就是我們不直接去做一件事而是讓另外一個人代替我們去做一件事。在互聯網中,我們如果是內網用戶,使用一臺代理服務器去訪問外網就是所謂的正向代理;而于此相反,一臺服務器接受來自外網的代理去訪問內網的服務器就是所謂的反向代理。
負載均衡
負載均衡有是什么意思?就說有多臺服務器,當用戶來訪問時候,有的服務器處理請求多,有的處理的少。就會導致有可能處理多服務器宕機,而有的還在空閑,為了解決這個問題我們就在這些服務器之前在加一臺服務器接受請求后,使用一定算法將請求平均分配到各個服務器上面。如果在深入點,會將公共的靜態內容放在前面的代理機器上面,將需要后端處理的內容按照功能分類到不同服務器上。因此反向代理也可以說是一種負載均衡。而負載均衡前面處理負載均衡算法的服務器也可以看成代理服務器。
那么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; #(反向代理設置)
#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;
}
}
}