因为不是每个应用都需要使用 jk 转发到 Tomcat 所以修改了下加载。 首先当前的 Ubuntu Server 似乎把 jk.conf 直接丢在 /etc/apache2/conf.d 下,而不是放在 /etc/apache2/mods-available 目录。 自然使用 sudo a2enmod jk 的时候就不会创建 /etc/apache2/mods-enabled/jk.conf 软连接。 所以先要把这个文件移到 /etc/apache2/mods-available: sudo mv /etc/apache2/conf.d/jk.conf /etc/apache2/mods-available 修改 /etc/apache2/mods-available/jk.conf 内容如下: JkWorkersFile /etc/libapache2-mod-jk/workers.properties

Where to put jk logs

JkLogFile /var/log/apache2/mod_jk.log

Set the jk log level [debug/error/info]

JkLogLevel info

Select the log format

JkLogStampFormat “[%a %b %d %H:%M:%S %Y]”

JkOptions indicate to send SSL KEY SIZE,

JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

JkRequestLogFormat set the request format

JkRequestLogFormat “%w %V %T”

将所有servlet 和jsp请求通过ajp13的协议送给Tomcat,让Tomcat来处理

#JkMount /servlet/* ajp13_worker #JkMount /.jsp ajp13_worker #JkMount /.do ajp13_worker JkShmFile /var/log/jk-runtime-status #<LocationMatch .web-inf.=”“>

AllowOverride None

deny from all

#</LocationMatch></code> 也就是注释掉 JkMount 设置和 LocationMatch 节。 如果已经启动 jk 模块,需要自行创建一个软连接: sudo ln -s /etc/apache2/mods-available/jk.conf /etc/apache2/mods-enabled/jk.conf 没有启用,直接使用 sudo a2enmod jk 即可。 然后创建一个 mods-optional 用来放置可选的模块配置文件。 sudo nano /etc/apache2/mods-optional/jk.conf 内容如下: <IfModule mod_jk.c>

将所有servlet 和jsp请求通过ajp13的协议送给Tomcat,让Tomcat来处理

#JkMount /servlet/* ajp13_worker JkMount /.jsp ajp13_worker JkMount /.do ajp13_worker <LocationMatch ‘.WEB-INF.‘> #       AllowOverride None         deny from all </LocationMatch> </IfModule></code> 也就是在 /etc/apache2/mods-available/jk.conf 注释掉的内容,并且加上了 IfModule mod_jk.c 判断。 最后就是在虚拟主机的配置文件中 Include: sudo nano /etc/apache2/sites-available/test 示例内容如下: <VirtualHost *:80>         Servername www.test.com         ServerAdmin webmaster@test.com         DocumentRoot /var/www/jsp/test         DirectoryIndex index.html index.htm index.jsp         <Directory />                 Options FollowSymLinks                 AllowOverride None         </Directory>         <Directory /var/www/jsp/test>                 Options FollowSymLinks MultiViews                 AllowOverride None                 Order allow,deny                 allow from all         </Directory>         Include /etc/apache2/mods-optional/jk.conf         ErrorLog /var/log/apache2/error.test.log         # Possible values include: debug, info, notice, warn, error, crit,         # alert, emerg.         LogLevel warn         CustomLog /var/log/apache2/access.test.log combined         ServerSignature On </VirtualHost> 一点题外话:最近配置 tomcat 虚拟主机的时候总是处理不了 *.do 转发,原因是一直以来都是将虚拟主机的 appBase 目录和应用的 docBase 目录放在同一目录下。 也就是 appBase 直接指向程序,docBase 为 . 当前目录。实际上这种配置不能完全满足需要。 修改 server.xml 相关部分如下:       <Host name="www.test.com" debug="0"             appBase="/var/www/jsp" unpackWARs="false"             autoDeploy="false" xmlValidation="false" xmlNamespaceAware="false">           <Context path="" docBase="test" />           <Logger className="org.apache.catalina.logger.FileLogger"                   directory="logs"                   prefix="test_log." suffix=".txt" timestamp="true" />       </Host><div class="flockcredit" style="text-align: right; color: #CCC; font-size: x-small;">用 Flock 浏览器 创建</div>