Nginx反向代理及负载均衡
1.??nginx反向代理
1.1. 什么是反向代理
? ? ? ? ? ??通常的代理服務(wù)器,只用于代理內(nèi)部網(wǎng)絡(luò)對Internet的連接請求,客戶機(jī)必須指定代理服務(wù)器,并將本來要直接發(fā)送到Web服務(wù)器上的http請求發(fā)送到代理服務(wù)器中由代理服務(wù)器向Internet上的web服務(wù)器發(fā)起請求,最終達(dá)到客戶機(jī)上網(wǎng)的目的。
? ? ? ?而反向代理(Reverse Proxy)方式是指以代理服務(wù)器來接受internet上的連接請求,然后將請求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器,并將從服務(wù)器上得到的結(jié)果返回給internet上請求連接的客戶端,此時(shí)代理服務(wù)器對外就表現(xiàn)為一個(gè)反向代理服務(wù)器。
如下圖:
1.2. nginx+tomcat反向代理
i. ?需求
???????? 兩個(gè)tomcat服務(wù)通過nginx反向代理,本例子使用三臺(tái)虛擬機(jī)進(jìn)行測試,
???????? nginx服務(wù)器:192.168.101.3
???????? tomcat1服務(wù)器:192.168.101.5
???????? tomcat2服務(wù)器:192.168.101.6?
如下圖:
ii. 啟動(dòng)tomcat
???????? tomcat使用apache-tomcat-7.0.57版本,在192.168.101.5和192.168.101.6虛擬機(jī)上啟動(dòng)tomcat。
iii. nginx反向代理配置
? ? ? ? ?根據(jù)上邊的需求在nginx.conf文件中配置反向代理,如下:
?
? ? ? ? ?#配置一個(gè)代理即tomcat1服務(wù)器
? ? ? ? ?upstream tomcat_server1 {
? ? ? ? ? ? ? ? ? ? ?server 192.168.101.5:8080;
? ? ? ? ?}
? ? ? ? ?#配置一個(gè)代理即tomcat2服務(wù)器
? ? ? ? ?upstream tomcat_server2 {
? ? ? ? ? ? ? ? ? ? ?server 192.168.101.6:8080;
? ? ? ? ?}
?
? ? ? ? #配置一個(gè)虛擬主機(jī)
? ? ? ?server {
? ? ? ? ? ? ? ? ? listen 80;
? ? ? ? ? ? ? ? ? server_name aaa.test.com;
???????? ? ? ?? ? location / {
???????????????????????????????????? #域名aaa.test.com的請求全部轉(zhuǎn)發(fā)到tomcat_server1即tomcat1服務(wù)上
?????????????? ? ? ? ? ? ??? ? ? ? ?proxy_pass http://tomcat_server1;
???????????????????????????????????? #歡迎頁面,按照從左到右的順序查找頁面
??????????????? ? ? ? ? ? ? ??? ? ? ?index index.jsp index.html index.htm;
? ? ? ? ? ? ? ? ? ?}
? ? ? ? ?}
?
? ?? ?? ?server {
? ? ? ? ? ? ? ? ??listen 80;
? ? ? ? ? ? ? ? ??server_name bbb.test.com;
? ? ? ? ? ? ? ? ???location / {
???????????????????????????????????? ?#域名bbb.test.com的請求全部轉(zhuǎn)發(fā)到tomcat_server2即tomcat2服務(wù)上
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?proxy_pass http://tomcat_server2;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? index index.jsp index.html index.htm;
? ? ? ? ? ? ? ? ??}
? ? ? ? ? ?}
iv. 測試
? ? ? ???分別修改兩個(gè)tomcat下的webapps/ROOT/index.jsp的內(nèi)容,使用tomcat1和tomcat2兩個(gè)服務(wù)首頁顯示不同的內(nèi)容,如下:
? ? ? ???tomcat1下的index.jsp修改后:
? ? ? ???tomcat2下的index.jsp修改后:
?
?
?
? ? ? ???分別訪問aaa.test.com、bbb.test.com測試反向代理。
? ? ? ???請求訪問aaa.test.com通過nginx代理訪問tomcat1,請求訪問bbb.test.com通過nginx代理訪問tomcat2。
2.??負(fù)載均衡
2.1. 什么是負(fù)載均衡
???????? 負(fù)載均衡建立在現(xiàn)有網(wǎng)絡(luò)結(jié)構(gòu)之上,它提供了一種廉價(jià)有效透明的方法擴(kuò)展網(wǎng)絡(luò)設(shè)備和服務(wù)器的帶寬、增加吞吐量、加強(qiáng)網(wǎng)絡(luò)數(shù)據(jù)處理能力、提高網(wǎng)絡(luò)的靈活性和可用性。
???????? 負(fù)載均衡,英文名稱為Load Balance,其意思就是分?jǐn)偟蕉鄠€(gè)操作單元上進(jìn)行執(zhí)行,例如Web服務(wù)器、FTP服務(wù)器、企業(yè)關(guān)鍵應(yīng)用服務(wù)器和其它關(guān)鍵任務(wù)服務(wù)器等,從而共同完成工作任務(wù)。
2.2. nginx實(shí)現(xiàn)負(fù)載均衡
v. 需求
???????? nginx作為負(fù)載均衡服務(wù)器,用戶請求先到達(dá)nginx,再由nginx根據(jù)負(fù)載配置將請求轉(zhuǎn)發(fā)至 tomcat服務(wù)器。
???????? nginx負(fù)載均衡服務(wù)器:192.168.101.3
???????? tomcat1服務(wù)器:192.168.101.5
???????? tomcat2服務(wù)器:192.168.101.6
vi.配置
? ? ? ???根據(jù)上邊的需求在nginx.conf文件中配置負(fù)載均衡,如下:
?
? ? ? ??upstream tomcat_server_pool{
? ? ??? ? ??? ? ??? ? ??server 192.168.101.5:8080 weight=10;
???????? ? ??? ? ??? ? ??server 192.168.101.6:8080 weight=10;
? ? ? ??}
?
???? ? ?server {
??????? ? ??? ? ???listen 80;
??????? ? ??? ? ???server_name aaa.test.com;
??????? ? ??? ? ???location / {
??????????? ? ??? ? ???????? proxy_pass http://tomcat_server_pool;
????????????? ? ??? ? ?????? index index.jsp index.html index.htm;
????? ? ? ? ?? ????}
???? ? ??}
| 節(jié)點(diǎn)說明: 在http節(jié)點(diǎn)里添加: ? #定義負(fù)載均衡設(shè)備的 Ip及設(shè)備狀態(tài) upstream myServer {?? ? ??? server 127.0.0.1:9090 down; ??? server 127.0.0.1:8080 weight=2; ??? server 127.0.0.1:6060; ??? server 127.0.0.1:7070 backup; } ? 在需要使用負(fù)載的Server節(jié)點(diǎn)下添加 ? proxy_pass http://myServer; ? upstream 每個(gè)設(shè)備的狀態(tài): ? down 表示單前的server暫時(shí)不參與負(fù)載 weight? 默認(rèn)為1.weight越大,負(fù)載的權(quán)重就越大。 max_fails :允許請求失敗的次數(shù)默認(rèn)為1.當(dāng)超過最大次數(shù)時(shí),返回proxy_next_upstream 模塊定義的錯(cuò)誤 fail_timeout:max_fails 次失敗后,暫停的時(shí)間。 backup: 其它所有的非backup機(jī)器down或者忙的時(shí)候,請求backup機(jī)器。所以這臺(tái)機(jī)器壓力會(huì)最輕。 |
vii.測試
? ? ? ???請求aaa.test.com,通過nginx負(fù)載均衡,將請求轉(zhuǎn)發(fā)到tomcat服務(wù)器。
? ? ??通過觀察tomcat的訪問日志或tomcat訪問頁面即可知道當(dāng)前請求由哪個(gè)tomcat服務(wù)器受理。
總結(jié)
以上是生活随笔為你收集整理的Nginx反向代理及负载均衡的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle中通过substr和inst
- 下一篇: ios html5上架,iOS原生集成H