web-tomcat.png
官方文档: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 nameConnector 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 &quot;%r&quot; %s %b" />
      </Host>
     </Engine>
   </Service>

IIS配置部分

配置Tomcat服务器运行正常后做IIS+Tomcat整合

tomcat连接器

下载地址:https://downloads.apache.org/tomcat/tomcat-connectors/jk/binaries/windows/

  • 配置为ISAPI筛选器

iis-tomcat-1.png
jsp站点下添加虚拟目录jakarta(参照isapi_redirect.properties中设置),编辑功能权限,修改为“执行”
iis-tomcat-2.png

  • 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