前言
nginx處理用戶請求的靜態頁面,tomcat處理用戶請求jsp頁面,來實現動態分離,nginx處理靜態頁面效率遠高於tomcat,這樣一來就能更好的提高併發,處理性能。
一、環境準備
1、JDK配置
運維之道 | Linux環境安裝配置JDK(rpm、源碼)
百度網盤 jdk 安裝包 — 密碼:ocg2
2、Nginx安裝
運維之道 | Centos7 Nginx安裝部署
百度網盤 nginx 安裝包 — 密碼:xw8x
3、Tomcat安裝
運維之道 | CentOS7 Tomcat安裝部署
百度網盤 tomcat 安裝包 — 密碼:a9k5
二、主配置文件配置
1、修改nginx配置文件
[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
user root;
worker_processes 1;
error_log logs/error.log;
pid logs/nginx.pid;
events {
use epoll;
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#日誌格式定義
log_format main '$remote_addr - $remote_user[$time_local] "$request" '
'$status $body_bytes_sent"$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
keepalive_timeout 65;
#gzip壓縮功能設置
gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.0;
gzip_comp_level 2;
gzip_types text/plain application/x-javascripttext/css application/xml;
gzip_vary on;
server {
listen 80;
server_name 192.168.182.11;
location / {
#jsp網站程序根目錄,一般nginx與tomcat在同一個目錄
root /usr/local/tomcat/webapps/ROOT/;
index index.html index.jsp index.html;
}
location ~ .*.jsp$ {
index index.jsp;
proxy_pass http://127.0.0.1:8080; #來自jsp請求交給tomcat處理
proxy_redirect off;
proxy_set_header Host $host; #後端的Web服務器可以通過X-Forwarded-For獲取用戶真實IP
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; #nginx跟後端服務器連接超時時間
proxy_read_timeout 90; #連接成功後,後端服務器響應時間
proxy_buffer_size 4k; #設置代理服務器(nginx)保存用戶頭信息的緩衝區大小
proxy_buffers 6 32k; #proxy_buffers緩衝區,網頁平均在32k以下的話,這樣設置
proxy_busy_buffers_size 64k;#高負荷下緩衝大小(proxy_buffers*2)
proxy_temp_file_write_size 64k; #設定緩存文件夾大小,大於這個值,將從upstream服務器傳
}
location ~ .*\.(gif|jpg|png|bmp|swf|html)$ #由nginx處理靜態頁面
{
expires 30d; #使用expires緩存模塊,緩存到客戶端30天
}
location ~ .*\.(jsp|js|css)?$
{
2、修改nginx、tomcat測試界面
- 將百度的首頁作爲nginx測試界面
[root@localhost ~]# curl www.baidu.com > /usr/local/nginx/html/index.html
- 將百度的首頁作爲tomcat測試界面
[root@localhost ~]# curl www.baidu.com > /usr/local/tomcat/webapps/ROOT/index.html
3、性能測試
使用的ab壓力測試工具,模擬發起一次1萬的併發請求,使用的index.html頁面是百度首頁代碼
Nginx測試
Tomcat測試
主要參數說明:
Requests per second
:平均每秒處理事務數Time per request
:平均事務響應時間Tranfer rate
:平均每秒網絡吞吐量
經上面測試得出:nginx每秒處理請求7600次,而tomcat每秒只處理請求6000次。
由此看來,nginx比tomcat處理能力強,如果網站程序靜態頁面多的話,就應該考慮使用Nginx與Tomcat整合來使用。