1. 程式人生 > >Nginx--反向代理和負載均衡

Nginx--反向代理和負載均衡

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則是一個一次輪詢