反向代理是指以代理服務器(nginx)來接受Internet上的鏈接請求,而後將請求轉發給內部網絡上的服務器;並將服務器上獲得的結果返回給Internet上請求鏈接的客戶端,此時的代理服務器對外就表現爲一個服務器。html
一般的代理服務器,只用於代理內部網絡對Internet的鏈接請求,客戶機必須指定代理服務器,並將原本要直接發送到Web服務器上的http請求發送到代理服務器中。當一個代理服務器可以代理外部網絡上的主機,訪問內部網絡時,這種代理服務的方式稱爲反向代理服務。nginx
nginx服務器地址:***.13.102.164:80算法
tomact8.5地址:***.13.102.164:8080瀏覽器
tomact8.0地址:***.13.102.164:8081tomcat
服務器啓動nginx,瀏覽器進入80端口,能夠看到nginx的主界面:服務器
而後用nginx服務器代理tomcat,網絡
在nginx.conf作以下配置:session
1.在配置文件中加入一個upstream,upstream能夠認爲是對新增server的管理,咱們能夠在upstream中增長server並作一些負載均衡的配置。負載均衡
2.在location中增長一個proxy_pass,顧名思義它就是代理轉發,經過location路由規則進入的服務會轉發到proxy_pass配置的服務。測試
測試一下,在瀏覽器輸入80端口的nginx地址:
能夠看到他再也不進入nginx主頁,而進入它代理的tomcat8.5服務器。
負載均衡它是經過分發多個客戶端的請求,到多個服務器的方式來緩解服務器端的壓力。
upstream
upstream中能夠配置多個代理服務器,並設置分發到各服務器的策略,默認的策略是輪詢,而且若是其中有一個down掉,會自動將它剔除。
經常使用的負載均衡策略有4種:配置權重(weight),訪問ip(ip_hash),fair.
1)配置權重就是設置每一個服務器的輪詢概率,例:
upstream tomcatserver1 { server 106.13.102.164:8080 weight=1; server 106.13.102.164:8081 weight=5; }
這樣客戶端訪問到8081端口的比例比8080端口的比例大5倍。
2)根據訪問ip的hash算法結果來分配,這樣保證每一個ip訪問到的都是固定server(這樣也不會存在session共享問題),例:
upstream tomcatserver1 { ip_hash; server 106.13.102.164:8080; server 106.13.102.164:8081 ; }
3)fair(按照服務器的相應時間)
upstream tomcatserver1 { fair; server 106.13.102.164:8080; server 106.13.102.164:8081 ; }
這樣一個簡單的負載均衡案例就配置完成。
能夠用權重方案測試一下,經過配置文件重啓nginx,不停刷新瀏覽器,能夠看到進入8081端口的概率比8080大。