一、Nginx簡單介紹
Nginx是一種服務器軟件,也是一種高性能的http和反向代理服務器,同時還是一個代理郵件服務器。也就是說,我們在Nginx上可以發佈網站,可以實現負載均衡(提高應答效率,避免服務器崩潰),還可以作爲郵件服務器實現收發郵件等功能。而最常見的就是使用Nginx實現負載均衡。
Nginx反向代理的過程:
用戶A始終認爲它訪問的是原始服務器B而不是代理服務器Z,但實用際上反向代理服務器接受用戶A的應答,從原始資源服務器B中取得用戶A的需求資源,然後發送給用戶A。由於防火牆的作用,只允許代理服務器Z訪問原始資源服務器B。儘管在這個虛擬的環境下,防火牆和反向代理的共同作用保護了原始資源服務器B,但用戶A並不知情。
Nginx負載均衡的過程(會自動選擇壓力較小的服務器進行訪問):
Nginx的應用
1、到官網下載Windows版本,下載地址:http://nginx.org/en/download.html
2、解壓到磁盤任一目錄
3、修改配置文件:具體參考備註。
4、啓動服務:
直接運行nginx.exe,缺點控制檯窗口關閉,服務關閉。
守護進程的方式啓動:start nginx.exe
停止服務:nginx -s stop
重新加載配置:nginx -s reload
最簡單的配置實例(conf/nginx.conf):
worker_processes 1; #工作進程數
events {
worker_connections 1024; #設置單個進程最大連接數
}
http {
include mime.types; #文件擴展名與文件類型映射表
default_type application/octet-stream;#默認文件類型
sendfile on;
keepalive_timeout 65; #長連接超時時間,單位是秒
#主要是用於設置一組可以在proxy_pass和fastcgi_pass指令中使用額代理服務器,默認負載均衡方式爲輪詢
upstream cloudtest.com {
#weight權重,默認1,權重越大訪問概率越大,backup備用服務器,服務器全部崩潰後啓動
server 127.0.0.1:8081 weight=2;
#server 127.0.0.1:8082 backup;
server 127.0.0.1:8080 weight=3;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://cloudtest.com;
proxy_redirect default;
}
}
二、Tomcat的準備工作
首先,由於我是在一臺機器用Nginx + Tomcat,所以我需要修改tomcat配置,使Windows可以運行多臺tomcat。
只需要修改三個端口號(還未被使用的端口號)就可以了:
<Server port="8007" shutdown="SHUTDOWN"></Server>
<Connector port="8082" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8011" protocol="AJP/1.3" redirectPort="8443" />
三、運行結果
1、修改上面兩個Tomcat的默認頁面(爲了區分下面到底訪問的是那一臺Tomcat,隨便改一下即可)
2、啓動自己配置好的Tomcat
3、切換到自己Nginx解壓目錄:start nginx
結果如下:
第一次訪問,發現訪問的是Tomcat1上的程序:
然後刷新幾次,會交替訪問Tomcat2和Tomcat1的程序:
四、總結
誰能想到實現一個高性能的負載均衡集羣會如此簡單。Nginx的功能如此強大,配置卻如此簡單,我們還有什麼理由拒絕它呢?這比我們動不動就十多萬至幾十萬人民幣的F5 BIG-IP、NetScaler等硬件負載均衡交換機廉價了不知多少。此外,大家別忘了Nginx不僅僅是一個反向代理服務器,它本身也可以託管網站,作爲Web服務器,進行Http服務處理。