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