Nginx--反向代理和負載均衡
阿新 • • 發佈:2018-11-09
1、反向代理的定義:
反向代理伺服器決定哪臺伺服器提供服務。
比如:一個在公網上的ip地址,上面安裝了多個tomcat伺服器,每個伺服器都把自己的域名和這個ip地址繫結, 此時從公網來了一個(或多個)訪問這個ip地址的請求,都是先經過這個反向代理伺服器,再由這個伺服器把這些請求, 分發到各自系統的tomcat伺服器中。當各自的tomcat伺服器把請求處理完,把結果再次返回到反向代理伺服器, 再由反向代理伺服器返回到internet中,這叫反向代理。
2.nginx實現反向代理:
a)、在伺服器電腦上安裝兩個tomcat伺服器,埠分別是8080、8081 b)、在nginx的nginx.conf檔案中新增兩個server節點,配置倆個虛擬主機 upstream sina{ server 192.168.25.130:8080; --當分發請求到sina時,就是訪問 192.168.25.130:8080 } server { listen 80; --虛擬主機都監聽80埠 server_name www.sina.com.cn; --這個監聽的是www.sina.com.cn域名 #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://sina; --配置這個,當訪問www.sina.com.cn時,在通過反向代理,分發請求到 http://sina 中, index index.html index.htm; } } upstream sohu{ server 192.168.25.130:8081; } server { listen 80; server_name www.souhu.com; --這個監聽的是www.souhu.com域名 #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://sohu; --註解同上 index index.html index.htm; } } c)、在本機的hosts檔案中分別配置 www.sina.com.cn、www.souhu.com都繫結伺服器的ip, 再訪問這兩個域名,就能訪問伺服器上對應的8080、8081的tomcat伺服器 d)、流程說明:當本機訪問域名 www.sina.com.cn時,會先把請求傳送到nginx伺服器,然後nginx根據這個域名, 找到proxy_pass屬性對應的http://sina,然後通過upstream sina,將請求轉發到192.168.25.130:8080 192.168.25.130:8080接收到請求後,將響應先返回到nginx,nginx再把結果返回到使用者
3.nginx負載均衡:
a).定義:如果一個網站的訪問量很大,可以使用多個tomcat來部署這個網站,此時可以使用nginx的負載均衡的功能, 把訪問這個網站的請求分配到不同的tomcat中 b).實現: 1.在伺服器再複製一個tomcat,埠為8082 2.在nginx.conf檔案中的一個server節點的upstream中,增加一個server節點 upstream sina{ server 192.168.25.130:8080; --這裡配置兩個server,則訪問www.sina.com.cn的請求會輪訓進入這兩個tomcat server 192.168.25.130:8082 weight=2; --weight預設值是1,weight越大,就進入這個tomcat的次數就越多 } server { listen 80; --虛擬主機都監聽80埠 server_name www.sina.com.cn; --這個監聽的是www.sina.com.cn域名 #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://sina; --配置這個,當訪問www.sina.com.cn時,在通過反向代理,分發請求到 http://sina 中, index index.html index.htm; } } 3.本機訪問www.sina.com.cn,會分別進入192.168.25.130:8080和192.168.25.130:8082,不配置weight則是一個一次輪詢