同一IP,同一端口,同一Tomcat下配置多虚拟主机,资料查了好久,见过用其它证书的,也有多IP的,就是没有同IP的,所以做个记录,也希望对其他人能用的上!(本人使用的是tomcat 8.5.23)
Connector部分属性配置参考 Apache Tomcat 9 Configuration Reference (9.0.54) - The HTTP Connector
编辑 conf/server.xml
1.找到 443端口位置 做如下修改(多域名,重复复制 SSLHostConfig部份。
<Connector port="443" protocol="org.apache.coyote.http11.Http11Nio2Protocol" maxThreads="150" SSLEnabled="true" defaultSSLHostConfigName="www.abc.com">
<SSLHostConfig hostName="www.abc.com">
<Certificate certificateKeystoreFile="key/wwwabc.keystore" certificateKeystorePassword="123456" type="RSA"/>
</SSLHostConfig>
<SSLHostConfig hostName="test.abc.com">
<Certificate certificateKeystoreFile="key/testabc.keystore" certificateKeystorePassword="654321" type="RSA"/>
</SSLHostConfig>
</Connector>
2.找到 Host 位置配置虚拟主机,各主机的根目录全部放在webapps内,这样不用开启多个服务,各虚拟主机共用80端口
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
</Realm>
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b"/>
</Host>
<Host name="www.abc.com" appBase="D:/logabc/www/" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"></Host>
<Host name="test.abc.com" appBase="D:/logtestabc/test/" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"></Host>
</Engine>
保存 重启tomcat服务
至此 大功告成!
祝好运!