nginx實現反向代理及負載均衡

1、反向代理html

1.什麼是反向代理

 

一般的代理服務器,只用於代理內部網絡對Internet的鏈接請求,客戶機必須指定代理服務器,並將原本要直接發送到Web服務器上的http請求發送到代理服務器中由代理服務器向Internet上的web服務器發起請求,最終達到客戶機上網的目的(也就是正向代理)。java

而反向代理(Reverse Proxy)方式是指以代理服務器來接受internet上的鏈接請求,而後將請求轉發給內部網絡上的服務器,並將從服務器上獲得的結果返回給internet上請求鏈接的客戶端,此時代理服務器對外就表現爲一個反向代理服務器。nginx

以下圖:

 

Nginx只作請求的轉發,後臺有多個http服務器提供服務,nginx的功能就是把請求轉發給後面的服務器,決定把請求轉發給誰。web

二、安裝tomcat2個,如今咱們模擬的話服務器就採用tomcat來模擬。windows

安裝tomcat的過程就不介紹了,在 http://blog.csdn.net/u013144287/article/details/78499485過程當中有介紹,
(1)建立一個tomcat目錄mkdir -p /usr/local/tomcats
在此目錄下安裝兩個tomcat如圖所示:
(2)修改tomcat2的端口號,vi ./tomcat2/conf/server.xml
<Server port="8006" shutdown="SHUTDOWN">
  1.  
    <Connector port= "8081" protocol="HTTP/1.1"
  2.  
    connectionTimeout= "20000"
  3.  
    redirectPort= "8443" />
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />
修改此3處端口號,分別在原來基礎上加1,而後wq保存,啓動兩臺tomcat

三、需求
nginx的安裝能夠參考 http://blog.csdn.net/u013144287/article/details/78408001此篇文章
經過訪問不一樣的域名訪問運行在tomcat不一樣端口的服務器,中間使用nginx反向代理服務器
windows上訪問須要修改hosts文件進行配置以下:

8080.zcinfo.com 訪問運行8080端口的tomcattomcat

8082.zcinfo.com 訪問運行8081端口的tomcat服務器

如圖所示:hosts目錄是:C:\Windows\System32\drivers\etc網絡

四、Nginx的配置
在Nginx的配置文件裏面加入以下配置
  1.  
    upstream tomcatserver1 {
  2.  
    server 192.168.3.43:8080;
  3.  
    }
  4.  
    upstream tomcatserver2 {
  5.  
    server 192.168.3.43:8082;
  6.  
    }
  7.  
    server {
  8.  
    listen 80;
  9.  
    server_name 8080.zcinfo.com;
  10.  
     
  11.  
    #charset koi8-r;
  12.  
     
  13.  
    #access_log logs/host.access.log main;
  14.  
     
  15.  
    location / {
  16.  
    proxy_pass http://tomcatserver1;
  17.  
    index index.html index.htm;
  18.  
    }
  19.  
    }
  20.  
    server {
  21.  
    listen 80;
  22.  
    server_name 8082.zcinfo.com;
  23.  
     
  24.  
    #charset koi8-r;
  25.  
     
  26.  
    #access_log logs/host.access.log main;
  27.  
     
  28.  
    location / {
  29.  
    proxy_pass http://tomcatserver2;
  30.  
    index index.html index.htm;
  31.  
    }
  32.  
    }
重啓nginx
ps:若是在同一個域名下有多臺服務器提供服務,此時須要nginx負載均衡。
五、測試
 
至此恭喜您,nginx反向代理成功
2、負載均衡
一、什麼是負載均衡?

負載均衡創建在現有網絡結構之上,它提供了一種廉價有效透明的方法擴展網絡設備和服務器的帶寬、增長吞吐量、增強網絡數據處理能力、提升網絡的靈活性和可用性。負載均衡

負載均衡,英文名稱爲Load Balance,其意思就是分攤到多個操做單元上進行執行,例如Web服務器、FTP服務器、企業關鍵應用服務器和其它關鍵任務服務器等,從而共同完成工做任務。性能

二、需求

 

nginx做爲負載均衡服務器,用戶請求先到達nginx,再由nginx根據負載配置將請求轉發至tomcat服務器。

nginx負載均衡服務器:192.168.3.43

tomcat1服務器:192.168.3.43:8080

tomcat2服務器:192.168.3.43:8081

三、nginx的配置

 

  1.  
    upstream tomcatserver1 {
  2.  
    server 192.168.3.43:8080;
  3.  
    server 192.168.3.43:8082; #多加了此臺服務器
  4.  
     }
  5.  
    upstream tomcatserver2 {
  6.  
    server 192.168.3.43:8082;
  7.  
    }
  8.  
    server {
  9.  
    listen 80;
  10.  
    server_name 8080.zcinfo.com;
  11.  
     
  12.  
    #charset koi8-r;
  13.  
     
  14.  
    #access_log logs/host.access.log main;
  15.  
     
  16.  
    location / {
  17.  
    proxy_pass http://tomcatserver1;
  18.  
    index index.html index.htm;
  19.  
    }
  20.  
    }
  21.  
    server {
  22.  
    listen 80;
  23.  
    server_name 8082.zcinfo.com;
  24.  
     
  25.  
    #charset koi8-r;
  26.  
     
  27.  
    #access_log logs/host.access.log main;
  28.  
     
  29.  
    location / {
  30.  
    proxy_pass http://tomcatserver2;
  31.  
    index index.html index.htm;
  32.  
    }
  33.  
    }
若是兩臺服務器性能差很少這樣設置重啓nginx就好了,可是如今假如兩臺服務器性能不同,還須要設置性能權重,讓性能高服務器作更多事情。只須要加入weight=?就好了,以下:

 

 

  1.  
    upstream tomcatserver1 {
  2.  
    server 192.168.3.43:8080 weight=2;
  3.  
    server 192.168.3.43:8082 weight=1;
  4.  
    }
  5.  
    upstream tomcatserver2 {
  6.  
    server 192.168.3.43:8082;
  7.  
    }
  8.  
    server {
  9.  
    listen 80;
  10.  
    server_name 8080.zcinfo.com;
  11.  
     
  12.  
    #charset koi8-r;
  13.  
     
  14.  
    #access_log logs/host.access.log main;
  15.  
     
  16.  
    location / {
  17.  
    proxy_pass http://tomcatserver1;
  18.  
    index index.html index.htm;
  19.  
    }
  20.  
    }
  21.  
    server {
  22.  
    listen 80;
  23.  
    server_name 8082.zcinfo.com;
  24.  
     
  25.  
    #charset koi8-r;
  26.  
     
  27.  
    #access_log logs/host.access.log main;
  28.  
     
  29.  
    location / {
  30.  
    proxy_pass http://tomcatserver2;
  31.  
    index index.html index.htm;
  32.  
    }
  33.  
    }
從新啓動nginx,會發現8080出現了兩次,8082出現一次這樣輪循。

 

ps:關於nginx負載均衡的一些參數介紹例子

 

  1.  
    節點說明:
  2.  
    在http節點裏添加:
  3.  
     
  4.  
    #定義負載均衡設備的 Ip及設備狀態
  5.  
    upstream myServer {
  6.  
     
  7.  
    server 127.0.0.1:9090 down;
  8.  
    server 127.0.0.1:8080 weight=2;
  9.  
    server 127.0.0.1:6060;
  10.  
    server 127.0.0.1:7070 backup;
  11.  
    }
  12.  
     
  13.  
    在須要使用負載的Server節點下添加
  14.  
     
  15.  
    proxy_pass http://myServer;
  16.  
     
  17.  
    upstream 每一個設備的狀態:
  18.  
     
  19.  
    down 表示單前的server暫時不參與負載
  20.  
    weight 默認爲1.weight越大,負載的權重就越大。
  21.  
    max_fails :容許請求失敗的次數默認爲1.當超過最大次數時,返回proxy_next_upstream 模塊定義的錯誤
  22.  
    fail_timeout:max_fails 次失敗後,暫停的時間。
  23.  
    backup: 其它全部的非backup機器down或者忙的時候,請求backup機器。因此這臺機器壓力會最輕。

 

四、效果

至此,恭喜您,nginx反向代理和負載均衡搭建成功
相關文章
相關標籤/搜索