亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

nginx實現tomcat動靜分離詳解

發布時間:2020-09-21 09:06:40 來源:腳本之家 閱讀:146 作者:浮云中的毛驢 欄目:服務器

1.為什么要實現動靜分離

1)nginx的處理靜態資源能力超強

主要是nginx處理靜態頁面的效率遠高于tomcat的處理能力,如果tomcat的請求量為1000次,則nginx的請求量為6000次,tomcat每秒的吞吐量為0.6M,nginx的每秒吞吐量為3.6M,可以說,nginx處理靜態資源的能力是tomcat處理能力的6倍,優勢可見一斑。

2)動態資源和靜態資源分開,使服務器結構更清晰。

2.動靜分離原理

服務端接收來自客戶端的請求中,有一部分是靜態資源的請求,例如html,css,js和圖片資源等等,有一部分是動態數據的請求。因為tomcat處理靜態資源的速度比較慢,所以我們可以考慮把所有靜態資源獨立開來,交給處理靜態資源更快的服務器例如nginx處理,而把動態請求交給tomcat處理。

如下圖所示,我們在機器上同時安裝了nginx和tomcat,把所有的靜態資源都放置在nginx的webroot目錄下面,把動態請求的程序都放在tomcat的webroot目錄下面,當客戶端訪問服務端的時候,如果是靜態資源的請求,就直接到nginx的webroot目錄下面獲取資源,如果是動態資源的請求,nginx利用反向代理的原理,把請求轉發給tomcat進行處理,這樣就實現了動靜分離,提高了服務器處理請求的性能。

nginx實現tomcat動靜分離詳解

3.動靜分離的詳細配置

1)首先熟悉下nginx的重要配置文件nginx.conf

user nginx; 
worker_processes 1; 
error_log logs/error.log; 
pid    logs/nginx.pid; 
events { 
  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 www.test.com; 
    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)$  #由nginx處理靜態頁面 
    { 
    expires 30d;  #使用expires緩存模塊,緩存到客戶端30天 
    } 
    location ~ .*\.( jsp|js|css)?$ 
    { 
    expires 1d; 
    } 
    error_page 404       /404.html;  #錯誤頁面 
    error_page  500 502 503 504 /50x.html; 
    location = /50x.html { 
      root  html; 
    } 
  } 

2)配置動靜分離

    #配置Nginx動靜分離,定義的靜態頁面直接從Nginx發布目錄讀取。 
location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$ { 
  root /webapps/myproject/code/static-resource; 
      #expires定義用戶瀏覽器緩存的時間為7天,如果靜態頁面不常更新,可以設置更長,這樣可以節省帶寬和緩解服務器的壓力 
  expires 1d; 
} 
location ~ ^/(WEB-INF)/ {#這個很重要,不然用戶就可以訪問了 
      deny all;  
    } 

這里需要注意,外部靜態文件的存放路徑,應當與請求中路徑一致,以免nginx拼接路徑后,由于路徑不存在而找不到文件。如果出現js、css等不加載的情況,可以查看nginx的errorlog進行調試修正,日志位于nginx目錄下的logs目錄內,如下截取一段錯誤的日志:

復制代碼 代碼如下:

[error] 7195#0: *1693 open() "/home/cms/include/dedeajax2.js" failed (2: No such file or directory), client: 101.226.35.225, server: localhost, request: "GET /cms/include/dedeajax2.js HTTP/1.1"   

可以看到,GET請求是 “ /cms/include/dedeajax2.js ”,這時nginx就會在配置中的 /home 下,尋找這一路徑的文件,完整路徑為:

/home/cms/include/dedeajax2.js 

報錯為 no such file or directory ,就可以在對應的 /home 目錄下看文件路徑的問題。

配置成功后,就可以發現靜態文件通過nginx處理了,靜態文件的請求不再進入tomcat服務器,從而可以打包時,靜態文件的目錄如js、css等不再打進war包。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

陈巴尔虎旗| 岳阳县| 紫阳县| 安化县| 石阡县| 石门县| 南安市| 信丰县| 托里县| 南江县| 繁峙县| 名山县| 文成县| 乌兰浩特市| 阳高县| 珠海市| 集贤县| 永安市| 乌鲁木齐市| 得荣县| 伊金霍洛旗| 龙陵县| 外汇| 承德县| 穆棱市| 凤阳县| 苍溪县| 马关县| 宾阳县| 南川市| 梧州市| 定安县| 太仆寺旗| 乌什县| 汉沽区| 新绛县| 兰坪| 乌拉特前旗| 乡宁县| 永顺县| 康保县|