整合IIS+Tomcat多vhost配置
本文發佈於863天前,文中的資訊可能已有所發展或是改變,請謹慎使用!
AI摘要:IIS和Tomcat可以整合使用,將Tomcat設為應用伺服器,運行在HTTP伺服器IIS背後。整合步驟包括配置Tomcat和IIS:首先,將Tomcat配置為應用伺服器,將server.xml改寫為引用子檔配置;然後,下載Tomcat連接器並配置IIS,添加虛擬目錄、編輯許可權、配置連接器屬性檔。最後在属性檔中配置好規則,將URI與Worker關聯。
Powered by 部落Bot.
官方文檔:https://tomcat.apache.org/connectors-doc/webserver_howto/iis.html
Apache、IIS、Nginx 屬於「HTTP Server」
一個 HTTP Server 關心的是 HTTP 協議層面的傳輸和訪問控制,所以在 Apache/IIS/Nginx 上你可以看到代理、負載均衡等功能。客戶端通過 HTTP Server 訪問伺服器上存儲的資源(HTML 檔、圖片檔等等)。通過 CGI 技術,也可以將處理過的內容通過 HTTP Server 分發,但是一個 HTTP Server 始終只是把伺服器上的檔如實的通過 HTTP 協議傳輸給客戶端。
而 Tomcat、Wildfly 則是一個「Application Server」,或者更準確的來說,是一個「Servlet/JSP」應用的容器(Ruby/Python 等其他語言開發的應用也無法直接運行在 Tomcat 上)。
應用伺服器是一個應用執行的容器。它首先需要支持開發語言的 Runtime(對於 Tomcat 來說,就是 Java),保證應用能夠在應用伺服器上正常運行。其次,需要支持應用相關的規範,例如類庫、安全方面的特性。對於 Tomcat 來說,就是需要提供 JSP/Sevlet 運行需要的標準類庫、Interface 等。為了方便,應用伺服器往往也會集成 HTTP Server 的功能,但是不如專業的 HTTP Server 那麼強大,所以應用伺服器往往是運行在 HTTP Server 的背後,執行應用,將動態的內容轉化為靜態的內容之後,通過 HTTP Server 分發到客戶端。
Tomcat配置部分
將server.xml
配置,改寫成引用子檔配置的格式。
後續新增vhost,此檔只需新增引用的子檔,不需要修改其他內容。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE server-xml [
<!ENTITY vhost-localhost SYSTEM "vhost\localhost.xml">
]>
<Server port="-1" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
<GlobalNamingResources>
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
&vhost-localhost;
</Server>
vhost\localhost.xml
注意Service name
、Connector port
不能與其他vhost重複,同時修改站點主機頭、路徑、日誌格式
<Service name="Catalina">
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" secretRequired="false" />
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="E:\jsp_site\webapps" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="E:\jsp_site\webapps" reloadable="false" crossContext="true"/>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="F:\LogFiles\tomcat.log\access\"
prefix="localhost" suffix=".log"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
</Engine>
</Service>
IIS配置部分
配置Tomcat伺服器運行正常後做IIS+Tomcat整合
tomcat連接器
下載地址:https://downloads.apache.org/tomcat/tomcat-connectors/jk/binaries/windows/
- 配置為ISAPI篩選器
jsp站點下添加虛擬目錄jakarta
(參照isapi_redirect.properties
中設置),編輯功能許可權,修改為“執行”
- 在
isapi_redirect.properties
中配置好相關路徑 - 在
workers.properties
中設置好worker名及對應port(端口在tomcat配置檔中修改)
ps=\
worker.list=webapps,jsp1
worker.webapps.type=ajp13
worker.webapps.host=localhost
worker.webapps.port=8009
worker.webapps.lbfactor=1
worker.jsp1.type=ajp13
worker.jsp1.host=localhost
worker.jsp1.port=8010
worker.jsp1.lbfactor=1
- 在
uriworkermap.properties
中配置好規則匹配uri與worker關聯(可匹配目錄也可匹配主機頭)
/localhost/*=webapps
/draw.oa.ht/*=jsp1