Java應用伺服器之tomcat基礎配置(二)

来源:https://www.cnblogs.com/qiuhom-1874/archive/2020/07/17/13326758.html
-Advertisement-
Play Games

connector連接器組件:主要作用負責接收請求,常見的連接器有三種,分別是http連接器,https連接器,和ajp連接器;進入tomcat的請求可分為兩類,一類是來自客戶端瀏覽器的訪問,一類是來自其他web server反代訪問;如果想配置tomcat只能通過代理來訪問,並且不能繞過代理來訪... ...


  前文我們聊了下tomcat的配置文件相關格式和組件簡介以及webapp目錄結構,manger部署和host managera部署,回顧請參考https://www.cnblogs.com/qiuhom-1874/p/13307892.html;今天我們來詳細聊一聊server.xml中的各組件配置和屬性;

  server:在tomcat中,一個server就代表一個tomcat實例;所謂tomcat實例就是在伺服器上表現為一個Java進程,預設監聽在8005埠,該套接字預設只接收"SHUTDOWN"來關閉tomcat實例;因此,在同一物理主機上啟動多個tomcat實例時,需要修改其監聽埠為不同其他tomcat實例所監聽的埠;

  示例:修改server預設用於關閉tomcat實例的命令

  預設配置

  使用預設配置關閉tomcat實例

  提示:可以看到當我們使用telent去連接8005埠,然後給它發送一個SHUTDOWN命令就可以實現關閉tomcat實例;

  更改關閉tomcat實例

  提示:以上配置表示使用SHUTDOWN-TOMCAT命令來關閉tomcat實例

  測試:重啟tomcat服務,然後用原來的SHUTDOWN命令看看是否可以關閉tomcat實例呢?

  提示:可以看到現在我們使用shutdown命令就不能把tomcat實例關閉掉了;

  測試:用SHUTDOWN-TOMCAT命令是否可關閉tomcat實例呢?

  提示:我們使用SHUTDOWN-TOMCAT命令就可以實現關閉tomcat實例;這裡建議把這個關閉實例的命令修改成其他不容器被猜到的命令,這樣相對要安全點;

  Service:用於實現將一個或多個connector組件關聯至一個engine組件;

  提示:以上配置上預設配置,預設service名稱叫catalina ,它關聯了一個connector 埠為8080 ,協議是http/1.1,連接超時時長為20秒,如果啟用了https,訪問對應資源如果必須是https,它預設會跳轉至8443埠;其實service的屬性就 一個name,這個沒有什麼好說的,預設情況我們都不會去更改service的名稱,用預設的catalina就行;

  Connector連接器組件:主要作用負責接收請求,常見的連接器有三種,分別是http連接器,https連接器,和ajp連接器;進入tomcat的請求可分為兩類,一類是來自客戶端瀏覽器的訪問,一類是來自其他web server反代訪問;如果想配置tomcat只能通過代理來訪問,並且不能繞過代理來訪問,我們可以選擇把http和https連接器給禁用了,只留一個ajp連接器,這樣一來tomcat就只能通過httpd的ajp反代來訪問,因為瀏覽器不支持ajp協議;

  Connector組件的屬性有:port用於指定連接器監聽的埠,如果只指定監聽埠沒有指定ip地址,表示監聽本機所有可用地址的對應埠;protocol用於指定用於連接該連接器所用到的協議;connectionTimeout用於指定連接該連接器的超時時長;address用於指定監聽的ip地址,不指定預設是本機所有可用地址;maxThreads用於指定該連接器的最大連接數,不指定預設為200;enableLookups用於指定是否啟用DNS查詢功能,如果開啟了此功能,每次訪問它都會把對應IP地址反接成主機名,其實這個是很消耗訪問時間的,所以通常情況下都是把這個屬性關閉的;acceptCount用於指定等待連接隊列的長度,如果鏈接隊列已經滿載了,這個屬性就是來指定後面排隊的長度;redirectPort用於指定重定向埠,假如我們訪問一個資源,而該資源又限定必須通過https協議訪問,此時我們用http連接器訪問該資源,它會跳轉至對應埠的連接器上;sslProtocol用於指定ssl協議;URIEnconding用於指定uri的字元集,這個在有些uri是中文的場景中需要指定;

  實例:添加一個連接器,監聽本機127.0.0.1:9090 使用協議為http1.1

  提示:以上配置標簽名稱區分大小寫,裡面的屬性不區分大小;通常建議還是區分大小寫去配置;tomcat的配置文件都遵循Java變數命名規範,都是駝峰式命名;

  測試:重啟tomcat服務,看看127.0.0.1:9090是否處於監聽狀態?

  提示:可以看到127.0.0.1:9090已經處於監聽狀態;

  Engine組件:主要作用實例化一個Servlet實例,用於運行servlet代碼,其內部可以一個或多個host組件來定義站點;如果有多個虛擬主機通常需要通過defaultHost屬性來定義預設的虛擬主機;這裡的虛擬主機和httpd里的虛擬主機概念沒有本質不同;engine的常用屬性有:name用於指定引擎的名稱;通常engine的名稱為catalina不會去改變,這是因為tomcat內建代碼中相關引擎的名稱為catalina;defaulthost用於指定預設虛擬主機;jvmroute用於指定tomcat集群jvm標識,意思是多個tomcat實例組成的集群,對應請求路由該發往那個引擎上,就是靠jvmroute來指定;這個有點類似ipvs中給報文打標記的意思;通常用於tomcat集群基於cookie的會話綁定或sessions stick中使用;

  Host組件:位於engine內部用於接收請求併進行相應處理的主機或虛擬主機;常用的屬性有:name用於指定host的名稱;appBase用於指定此Host的webapps的預設存放目錄,指存放非歸檔的web應用程式的目錄或歸檔的WAR文件目錄路徑;可以使用基於$CATALINA_BASE變數所定義的路徑的相對路徑;uppackwars用於指定是否將.war格式的包展開;autodeploy用於指定是否支持自動部署(在Tomcat處於運行狀態時,將某webapp放置於appBase所定義的目錄中時,是否自動將其部署至tomcat);

  示例:添加一個虛擬主機,名為www.test1.com ,對應網頁目錄根文件路徑為/appdata/test 支持展開.war包,支持自動部署

  更改配置文件,新增一個host

  提示:註意appBase必須區分大小寫,否則配置不會生效;

  新建host所指定的目錄和目錄結構

  提示:這裡新建的虛擬主機就相當於訪問對應虛擬主機名稱,然後就返回一個頁面;訪問的URL中是除了虛擬主機名稱就沒有別的uri了;所以我們需要在指定目錄下新建一個ROOT的目錄;

  新建一個測試頁

  重啟服務,訪問我們新建的虛擬主機,看看是否能夠訪問到我們提供的測試頁面?

  用瀏覽器訪問新建的虛擬主機,看看是否訪問到我們提供的測試頁面?

  提示:可以看到我們訪問www.test1.com 是可以正常訪問到我們提供的測試頁面,這意味著我們配置的虛擬主機生效了;

  Context組件:該組件主要作用是用於定義url路徑和網頁文件路徑的對應關係;有點類似nginx里的alias指令

  示例:把/helloapp/helloword 部署到www.test1.com虛擬主機上,並可以通過www.test1.com:8080/helloword訪問到

  創建目錄結構,並準備測試網頁

  提供測試頁面

  修改配置文件,新增context 把/helloapp/helloword 部署到www.test1.com上 並實現訪問www.test1.com:8080/helloword

  提示:以上配置表示訪問www.test1.com/helloword 對應頁面文件存放在/helloapp/helloword/下;context組件中path用於指定uri的路徑;docBase用於指定網頁目錄;

  重啟tomcat,訪問www.test1.com:8080/helloword看看是否訪問到我們提供的測試頁面?

  提示:我們提供的測試頁面能夠被訪問到;

  Valve組件:該組件根據不同類的實例不同,其作用也不同;常用於定義日誌,訪問控制;

  示例:給www.test1.com定義一個訪問日誌

  提示:Valve組件中className 用於指定類,不同類對於Valve有著不同的意義,也決定了valve的作用;valve相關使用說明請參考官方文檔https://tomcat.apache.org/tomcat-7.0-doc/config/valve.html;directory用於指定存放日誌的目錄,如果使用相對路徑則相對CATALINA_BASE所指定的位置;prefix用於指定日誌文件首碼名稱;suffix用於指定日誌文件尾碼名稱;中間部分通常是年月日時間用中橫線連接的字串;pattern用於指定日誌格式;有關日誌格式的巨集定義相關說明請查看官方文檔https://tomcat.apache.org/tomcat-7.0-doc/api/org/apache/catalina/valves/AccessLogValve.html;這裡需要說明一下,&quot表示一個雙引號,如果pattern中間有雙引號,請使用&quot去表示;

  重啟tomcat,訪問www.test1.com 看看是否有日誌生成

  提示:重啟tomcat後,在對應目錄就可以看到有我們剛纔定義的日誌文件;

  測試:訪問www.test1.com 看看是否在記錄日誌到對應日誌文件中?

  示例:定義只允許192.168.0.21訪問www.test1.com

  提示:以上配置表示只允許192.168.0.21這台主機訪問www.test1.com這台虛擬主機所提供的內容,其他主機都無法訪問,包括本機;

  測試:重啟tomcat,在ip為192.168.0.21上訪問www.test1.com看看是否可訪問?

  測試:在非192.168.0.232的主機上訪問看看是否可訪問?

  提示:可以看到在非192.168.0.21上訪問提示為許可權拒絕,是不能訪問www.test1.com這台虛擬主機所提供的頁面的;當然上面的配置使用allow來指定只允許的IP地址,這種是白名單機制;如果使用deny去指定,表示拒絕指定的IP訪問,開放未指定的IP訪問,這就是黑名單機制;


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 首先參照https://www.cnblogs.com/wdw984/p/13330074.html,來進行如何安裝Centos和離線下載rpm包。 離線下載jemalloc,上傳到CentOS的/data/rpm/jemalloc目錄 因為redis6.0.5推薦使用jemalloc管理記憶體,所以 ...
  • 一 負載均衡概述 1.1 負載均衡介紹 負載均衡是將負載分攤到多個操作單元上執行,從而提高服務的可用性和響應速度,帶給用戶更好的體驗。對於Web應用,通過負載均衡,可以將一臺伺服器的工作擴展到多台伺服器中執行,提高整個網站的負載能力。其本質採用一個調度者,保證所有後端伺服器都將性能充分發揮,從而保持 ...
  • win10 訪問遠程文件夾 此共用需要過時的SMB1協議 你不能訪問此共用文件夾 step1 開放協議 在windows功能中勾選SMB1.0並重啟電腦 step2 修改本地策略 將“啟動不安全的來賓登錄”雙擊開啟並確定 PS windows訪問遠程(區域網)使用\\,其實就是,\為本地路徑,\\為 ...
  • 一 盜鏈 1.1 盜鏈概述 盜鏈指的是在自己的界面展示非本伺服器上的內容,通過技術手段獲得其他伺服器的資源。繞過他人資源展示頁面,在自己頁面向用戶提供此內容,從而減輕自己伺服器的負擔,因為真實的空間和流量來自其他伺服器。 因此,通常為了避免被盜鏈,通常Web伺服器建議配置防盜鏈,其主要防盜鏈思路是能 ...
  • 有時候CentOS工作在無互聯網的環境下,需要在離線環境下安裝一些組件,這次實現的是模擬在離線環境下安裝gcc4.8。 第一步: 先去http://mirrors.aliyun.com/centos/7/isos/x86_64/下載CentOS7的安裝鏡像。 第二步: 用虛擬機安裝CentOS7 1 ...
  • 近日,KubeSphere 社區子項目面向物理機環境的負載均衡器 Porter 正式進入 CNCF Landscape。CNCF Landscape 在雲原生實踐過程中的每個環節幫助用戶瞭解有哪些具體的軟體和產品選擇,Porter 進入 CNCF Landscape,意味著 Porter 正式成為了 ...
  • 在Docker中部署LNMP環境可以分為以下幾個步驟: 安裝Docker 創建鏡像 創建Dockerfile build Docerfile 複製/修改配置文件 運行鏡像,並映射埠 為了方便分散式部署,Nginx、PHP、MySQL和Web目錄會分別放在4個不同的容器中,最後我們會打包成4個鏡像。 ...
  • 概述 因為工作關係,最近有涉及到ADF(Atomic Display Framework)相關的內容,部分內容來自互聯網 ADF(Atomic Display Framework)是Google新增的Display框架,用來替換Framebuffer。 ADF在Android hwcomposer ...
一周排行
    -Advertisement-
    Play Games
  • GoF之工廠模式 @目錄GoF之工廠模式每博一文案1. 簡單說明“23種設計模式”1.2 介紹工廠模式的三種形態1.3 簡單工廠模式(靜態工廠模式)1.3.1 簡單工廠模式的優缺點:1.4 工廠方法模式1.4.1 工廠方法模式的優缺點:1.5 抽象工廠模式1.6 抽象工廠模式的優缺點:2. 總結:3 ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 本章將和大家分享ES的數據同步方案和ES集群相關知識。廢話不多說,下麵我們直接進入主題。 一、ES數據同步 1、數據同步問題 Elasticsearch中的酒店數據來自於mysql資料庫,因此mysql數據發生改變時,Elasticsearch也必須跟著改變,這個就是Elasticsearch與my ...
  • 引言 在我們之前的文章中介紹過使用Bogus生成模擬測試數據,今天來講解一下功能更加強大自動生成測試數據的工具的庫"AutoFixture"。 什麼是AutoFixture? AutoFixture 是一個針對 .NET 的開源庫,旨在最大程度地減少單元測試中的“安排(Arrange)”階段,以提高 ...
  • 經過前面幾個部分學習,相信學過的同學已經能夠掌握 .NET Emit 這種中間語言,並能使得它來編寫一些應用,以提高程式的性能。隨著 IL 指令篇的結束,本系列也已經接近尾聲,在這接近結束的最後,會提供幾個可供直接使用的示例,以供大伙分析或使用在項目中。 ...
  • 當從不同來源導入Excel數據時,可能存在重覆的記錄。為了確保數據的準確性,通常需要刪除這些重覆的行。手動查找並刪除可能會非常耗費時間,而通過編程腳本則可以實現在短時間內處理大量數據。本文將提供一個使用C# 快速查找並刪除Excel重覆項的免費解決方案。 以下是實現步驟: 1. 首先安裝免費.NET ...
  • C++ 異常處理 C++ 異常處理機制允許程式在運行時處理錯誤或意外情況。它提供了捕獲和處理錯誤的一種結構化方式,使程式更加健壯和可靠。 異常處理的基本概念: 異常: 程式在運行時發生的錯誤或意外情況。 拋出異常: 使用 throw 關鍵字將異常傳遞給調用堆棧。 捕獲異常: 使用 try-catch ...
  • 優秀且經驗豐富的Java開發人員的特征之一是對API的廣泛瞭解,包括JDK和第三方庫。 我花了很多時間來學習API,尤其是在閱讀了Effective Java 3rd Edition之後 ,Joshua Bloch建議在Java 3rd Edition中使用現有的API進行開發,而不是為常見的東西編 ...
  • 框架 · 使用laravel框架,原因:tp的框架路由和orm沒有laravel好用 · 使用強制路由,方便介面多時,分多版本,分文件夾等操作 介面 · 介面開發註意欄位類型,欄位是int,查詢成功失敗都要返回int(對接java等強類型語言方便) · 查詢介面用GET、其他用POST 代碼 · 所 ...
  • 正文 下午找企業的人去鎮上做貸後。 車上聽同事跟那個司機對罵,火星子都快出來了。司機跟那同事更熟一些,連我在內一共就三個人,同事那一手指桑罵槐給我都聽愣了。司機也是老社會人了,馬上聽出來了,為那個無辜的企業經辦人辯護,實際上是為自己辯護。 “這個事情你不能怪企業。”“但他們總不能讓銀行的人全權負責, ...