Nginx系列3之Nginx+tomcat


preface

公司部分應用跑得的tomcat,眾所周知,tcomat高並發性能很弱,所以在處理靜態請求的時候,我們就把他拋給Nginx處理,而Tomcat專門處理動態請求。所以在這里說說Nginx+tomcat的結合方式。

Nginx和Tomcat結合方式

  1. 將所有靜態頁面交給nginx,動態請求交給后端tomcat處理。
  2. 將所有請求交給后端tomcat服務器處理,只是利用Nginx自身的負載均衡功能進行多台tomcat服務器調度流量
動靜分離

我們假設127.0.0.1:8080是tomcat。
那么nginx配置文件如下:

server {

    listen       80;
    server_name  web1.test.com;
    charset utf8;
    access_log  /var/log/nginx/access.log  main;

    location / {
        root   /var/www/html;
        index  index.html index.htm;
    }

    location /img/ {
        root   /var/www/html/img;
        index  index.html index.htm;
    }
    error_page  404              /404.html;
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
    location ~ \.(php|do)$ {
        proxy_pass http://127.0.0.1:8080;
        proxy_redirect off;
        proxy_set_header HOST $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        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 16k;
        proxy_buffers 4 32k;
        proxy_busy_buffers_size 128k;
        proxy_temp_file_write_size 64k;
    }
}

在上面的實例中,首先定義了一個虛擬主機的servername ( web1.test.com),然后凡是首頁的和、img下面的都給nginx完成,而所有jsp,do結尾的交給tomcat處理。
需要注意的是,在location指令中使用正則表達式后,proxy_pass后面的代理路徑不能包含地址連接,也就是不能寫成http://192.168.12.130:8080 ,或者類似http://192.168.12.130:8080/jsp的形式,在location指令不使用正則表達式時,沒有此限制。

對Tomcat負載均衡

Nginx負載均衡配置:

upstream mytomcats {
    server 192.168.12.131:8080;
    server 192.168.12.132:8080;
    server 192.168.12.133:8080;
}
server {
    listen 80;
    server_name www.baidu.com;
}
location ~* \.(jpg|gif|png|flv|swf|wma|wmv|asf)$ {
    root /web/www/html;
}

location / {
    proxy_pass http://mytomcats;
    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
    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_busy_buffers_size 64k;
    proxy_temp_file_write_size 64k;
}

定義了一個upstream負載均衡組,組名為mytomcats,組的成員就是指定的192.168.12.131-192.168.12.133,通過location指令以正則表達式的方式將指定類型的文件全部交給Nginx去處理。其他的所有交給tomcat處理。


免責聲明!

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



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