整合Tomcat和Nginx實現動靜態負載均衡


轉載請注明原文地址:http://www.cnblogs.com/ygj0930/p/6386135.html

 

    Nginx與tomcat整合可以實現服務器的負載均衡。

    在用戶的請求發往服務器進行處理時,如果請求太多處理不了,容易造成服務器阻塞、響應慢等情況。這時,如果我們可以有多台服務器的話,就可以實現把請求派發給各台服務器進行處理,這個分發的過程就是由Nginx完成的。同樣,由於Tomcat主要用來處理動態的內容,比如jsp文件。那么靜態的html/圖片等資源就可以交給Nginx來處理,期間也用到了分發。對於有多台服務器時,用一台服務器裝Nginx作為代理服務器,把所有請求匯集到這里進行分發到其他服務器。而對於一台服務器實現動靜態分離時,則需要在一台服務器上同時搭建Nignx和tomcat,並進行整合。其原理都是一樣的,配置的文件也幾乎一樣。這里,我們只講在一台服務器上的整合。

     一:安裝Nignx

sudo apt-get install nginx

     二:配置nginx.conf文件

    vi 打開nginx文件后,找到http{}節點,在里面添加:

upstream 你的域名{  
    server 你的雲主機IP:80;  
     }  

     然后添加一個server。如果是配置多台服務器,則在上面添加多個upstream,下面對應多個server進行分發。這里我只有一個服務器,所以配置一個:

 server {

        #偵聽80端口

            listen       80;

            #定義使用域名訪問

            server_name  www.xx.com;

            #設定本虛擬主機的訪問日志

            access_log  logs/www.xx.com.access.log  main;


        # 定義錯誤提示頁面

        error_page   500 502 503 504 /50x.html;

            location = /50x.html {

            root   /root;

        }

      

       location ~ .*.[jsp|do|action]$ { #所有jsp頁面以及do/action請求均交由   tomcat處理
       index index.jsp;
        proxy_pass http://你的域名:80; #轉向tomcat處理
    }

       location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { #設定訪問靜態文件直接讀取,不經過tomcat。過期時間30天
      expires      30d;
     }
     location ~ .*\.(js|css)?$ {
    expires      1h;
    }

        #設定查看Nginx狀態的地址

        location /NginxStatus {

            stub_status            on;

            access_log              on;

            auth_basic              "NginxStatus";

            auth_basic_user_file  conf/htpasswd;

        }
     }

     三:整合tomcat

sudo vi /etc/nginx/conf.d/proxy.conf

     輸入

#!nginx (-) 
# proxy.conf 
proxy_redirect          off;
proxy_set_header        Host $host;
proxy_set_header        X-Real-IP $remote_addr;  #獲取真實ip
#proxy_set_header       X-Forwarded-For   $proxy_add_x_forwarded_for; #獲取代理者的真實ip
client_max_body_size    10m;
client_body_buffer_size 128k;
proxy_connect_timeout   90;
proxy_send_timeout      90;
proxy_read_timeout      90;
proxy_buffer_size       4k;
proxy_buffers           4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;

    按Esc退出編輯模式,輸入 :wq  保存並退出。

    配置defalut文件:

sudo vi /etc/nginx/sites-available/defalut

    找到server{}添加:

#動態交給tomcat
location ~ .*.[jsp|do|action]$ { 
    index index.jsp;
    proxy_pass 你的域名:80;
}
#靜態直接讀取,不結果tomcat。過去時間30天
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
    expires      30d;
}
location ~ .*\.(js|css)?$ {
    expires      1h;
}

     保存並退出。

    四:測試。

    重啟你的雲主機。登錄ubuntu后,分別啟動nginx和tomcat。(注意:重新部署項目,或者每次關機重啟后,都需要分別啟動tomcat和nginx)!啟動nginx:/etc/init.d/nginx 啟動tomcat:bin目錄下 ./startup.sh

    然后在瀏覽器分別輸入  你的域名  以及    你的域名:80/index.jsp  ,發現都跳轉到同一頁面。說明整合成功~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM