tomcat和iis共用80埠的簡明手冊
對於使用tomcat-connector實現iis與tomcat實現80埠共用的問題,網上的資訊異常混亂,很多地方誤人子弟,浪費時間。本文給出簡明手冊式的做法:
首先列出我們需要做的事項:
1、下載tomcat-connector的dll
2、建立2個目錄,一個用於iis建立網站,一個用於建立jakarta虛擬目錄
3、建立3個properties檔案
4、iis設定對映關係
下面簡明說明:
1、下載我就不說了,在tomcat官方完整可以下,會得到isapi_redirect.dll
下載地址:https://tomcat.apache.org/download-connectors.cgi
2、建立3個properties檔案,內容如下
2.1 isapi_redirect.properties
內容如下:
# Configuration file for the Tomcat ISAPI Redirector
# The path to the ISAPI Redirector Extension, relative to the website
# This must be in a virtual directory with execute privileges
extension_uri=/jakarta/isapi_redirect.dll
# Full path to the log file for the ISAPI Redirector
log_file=d:/temp/logs/isapi_redirect.log
# Log level (debug, info, warn, error or trace)
log_level=debug
# Full path to the workers.properties file
worker_file=d:/temp/workers.properties
# Full path to the uriworkermap.properties file
worker_mount_file=d:/temp/uriworkermap.properties
2.2 workers.properties
內容如下:
workers.tomcat_home=D:/tomcat9/
workers.java_home=C:/Program Files/Java/jre1.8.0_191/
# 值可任意,但需要與uriworkermap.properties配置保持一致,不一致會導致空白頁
worker.list=jdart
#下面其他可以忽略,系統都有預設值
#worker.jdart.type=ajp13
#這是tomcat的訪問域名或IP
#worker.jdart.host=127.0.0.1
#同server.xml配置一致
#worker.jdart.port=8009
2.3 uriworkermap.properties
內容如下:
#這個地方,=前面為tomcat的專案名稱,後面為worker.list的名稱,如下面就是對映 http://localhost:8080/tomcatprojectname/這個tomcat網站的
#如果不加專案名:/*=jdart 會對映所有tomcat網站
/tomcatprojectname/*=jdart
2、建立如下目錄結構
temp 目錄,用於存放workers.properties和uriworkermap.properties
temp\jakarta\目錄,用於放置isapi_redirect.properties和isapi_redirect.dll
目錄結構很重要,如果isapi_redirect.properties沒有存放到jakarta目錄,會出現GetFilterVersion失敗的500錯誤
3、iis配置
iis配置很簡單,主要有下面幾點:
1、對temp目錄建立一個網站,然後對jakarta目錄建立一個虛擬目錄,如果沒有jakarta目錄,則會對映失敗,出現404找不到資源的錯誤
圖1
2、在iis跟節點的功能列表中增加isapi和cgi限制,並設定為允許
ispai路徑,選擇你的isapi_redirect.dll,名稱隨便,記得要設定為允許
圖2
圖3
圖4 編輯許可權
圖5 注意設定為允許
3、新增isapi篩選器
名稱最好為jakarta,見圖3
4、在網站的處理程式對映介面,編輯功能許可權,全選各個許可權即可,見圖4。
到此你如果完整按照上述配置,應該可以通過iis訪問到tomcat的地址了
整個過程有很多誤區:
誤區包括:
1、是否需要修改登錄檔:
答,不需要,tomcat docs裡面已經明確說明, The redirector will check for the isapi_redirect.properties file during initialisation, and use it in preference to the registry if present,所以isapi_redirect.properties最優先,其次才是登錄檔,而寫登錄檔非常容易搞錯。
需要注意的的是,這個properties檔案一定要放在共同目錄,否則無效。
2、是否需要設定埠:
答,只有非預設才需要設定,否則不需要設定
預設就是ajp13,localhost,8009,如果有變化你才需要設定,否則work.list後面的的行,全部可以刪除。
3、是否需要在tomcat/conf目錄放置那些檔案:
答:不需要,任意磁碟位置均可
4、出現GetFilterVersion 是由於沒有寫或修改登錄檔
答:登錄檔配置,基本不會成功,請用isapi_redirect.properties檔案,更為方便
HTTP 錯誤 500.0 - Internal Server Error》呼叫 GetFilterVersion 失敗,在 ISAPI 篩選器 "D:\tomcat9\iistomcatconnector\jakarta\isapi_redirect.dll" 上
5、是否需要配置tomcat的server.xml
答:根本不需要
6、是否需要配置iis的jsp對映
答:不需要,dll只按照uriworkermap.properties所配置的規則進行目錄對映,比如springboot開發的程式,根本沒有副檔名,更無從配置