Nginx+Tomcat實現反向代理與動靜分離

 

1. 什麼是動靜分離

        所謂動靜分離就是經過nginx(或apache等)來處理用戶端請求的靜態頁面,tomcat(或weblogic)處理動態頁面,從而達到動靜頁面訪問時經過不一樣的容器來處理。css

2. 爲何作動靜分離

         Nginx處理靜態頁面的效率遠高於tomcat,全部咱們只讓tomcat幹本身擅長的事情,以事實說話,咱們經過ab進行對一個靜態頁面訪問作壓力測試。html

1) 作動靜分離後nginx處理靜態頁面的壓力測試:

# ab -n 1000 -c 200 http://10.10.11.91/index.htmlnginx

clip_p_w_picpath002

吞吐量爲:1.2Mweb

2) 未作動靜分離而是直接由tomcat處理同一個靜態頁面的壓力測試:

# ab -n 1000 -c 200 http://10.10.11.91:8080/index.htmlapache

clip_p_w_picpath004

吞吐量爲:0.08Mtomcat

經過上面的壓力測試結果,全部請求由tomcat處理與動靜分離相比毫無疑問動靜分離纔是王道!jsp

3. 動靜分離邏輯圖

clip_p_w_picpath006

4. Nginx與tomcat部署

由一鍵安裝middleware_install_v.1.0.3.tar.gz進行部署,這裏再也不贅述。ide

5. Nginx配置

nginx須要配置的地方以下:測試

 

server {spa

listen 80;

server_name www.test.com 10.10.11.91;

index index.html index.htm index.jsp index.do

root /usr/local/nginx/html; #由nginx處理靜態頁面

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {

expires 30d;

}

location ~ .*\.(js|css)?$ {

expires 1h;

}

location ~ (\.jsp)|(\.do)$ {

proxy_pass http://10.10.11.91:8080; #以jsp和do請求的頁面通過nginx反向代理由tomcat處理

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_buffers 4 32k;

proxy_busy_buffers_size 64k;

proxy_temp_file_write_size 64k;

}

}

6. 驗證動靜分離的效果

我在tomcat的根目錄ROOT下創建了index.html、test.jsp、test.do三個測試文件:

clip_p_w_picpath007

我在nginx的根目錄/usr/local/nginx/html下創建測試首頁index.html

直接訪問tomcat的靜態首頁:

clip_p_w_picpath008

直接訪問tomcat的jsp頁面:

clip_p_w_picpath009

直接訪問tomcat的.do頁面:

clip_p_w_picpath010

如今進行經過nginx進行訪問:

Nginx的首頁:

clip_p_w_picpath011

查看nginx處理jsp頁面的請求: 

查看nginx處理.do頁面的請求:

clip_p_w_picpath013

至此,nginx與tomcat已實現了反向代理動靜分離。

相關文章
相關標籤/搜索