JSP在https后面显示源代码

时间:2012-07-11 15:35:02

标签: jsp tomcat apache2

这是一个奇怪的问题。我有一个网站没有正确呈现它的代码。它是Tomcat 5.0.27-2服务器(我知道......旧)和Apache 2.0.46-77服务器。我们现在无法升级它们,因为这是一个比我们现在所允许的更大的变化。

无论如何,这是发生的事情:

Go to https://mysite.com/mysite and the JSP renders correctly
Go to https://www.mysite.com/mysite and the RAW JSP is displayed, no rendering
Go to https://1.2.3.4/mysite and you get the TomCat welcome page.

不得不使用代码块,因为我无法发布无效的IP网址。

我确定这是配置设置,但我不知道它可能是什么。有一个问题,我们发布的SSL是针对mysite.com而不是www.mysite.com,但我不认为这是导致它的原因。如果我能将所有流量(www.mysite.com和IP)重定向到mysite.com,我会很高兴。

我查看了httpd.conf文件。我目前在VirtualHosts中有以下内容:

<VirtualHost 1.2.3.4:80>
 ServerName mysite.com
 DocumentRoot /mysite_root/ROOT
 ServerAdmin me@me.com
<Location "/*.jsp">
  JkUriSet worker ajp13:localhost:8009
</Location>
<Location "/*/*.jsp">
  JkUriSet worker ajp13:localhost:8009
</Location>
<Location "/*/*/*/*/*/*.jsp">
  JkUriSet worker ajp13:localhost:8009
</Location>
  RewriteEngine on
  RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK)
  RewriteRule .* - [F]
</VirtualHost>

我已按如下方式更新了文件:

的httpd.conf

<VirtualHost 1.2.3.4:80>
 ServerName mysite.com
 DocumentRoot /mysite_root/ROOT
 ServerAdmin me@me.com
 JkMount /*.jsp worker1
 JkMount /servlet/* worker1
 RewriteCond %{HTTP_HOST} ^www.mysite.com [nocase]
 RewriteRule ^(.*)         https://www.mysite.com/$1 [last,redirect=301]
</VirtualHost>    

的ssl.conf

<VirtualHost 1.2.3.4:443>
 ServerName mysite.com
 DocumentRoot /mysite_root/ROOT
 ServerAdmin me@me.com
 JkMount /*.jsp worker1
 JkMount /servlet/* worker1
 RewriteCond %{HTTP_HOST} ^www.mysite.com [nocase]
 RewriteRule ^(.*)         https://www.mysite.com/$1 [last,redirect=301]
</VirtualHost>    

mod_jk.conf

LoadModule  jk_module   modules/mod_jk.so
<IfModule jk_module>
  JkWorkersFile /etc/httpd/conf/workers.properties
  JkShmFile     /var/log/httpd/mod_jk.shm
  JkLogFile     /var/log/httpd/mod_jk.log
  JkLogLevel    info
  JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
  JkWatchdogInterval 60  
</IfModule>

workers.properties

worker.list=worker1

worker.worker1.type=ajp13
worker.worker1.host=localhost
work.worker1.port=8009

当我重新启动httpd时,没有错误,它会看到java_home和catalina_home

1 个答案:

答案 0 :(得分:1)

您需要确保JkMount指令在<VirtualHost>中的所有httpd.conf部分中重复。如果其中一个案例没有JkMount,那么Apache httpd将代替请求。

您的问题还表明您Alias了一个URI到您的webapp的docBase。这不是推荐的技术,因为它可以允许远程客户端请求诸如/META-INF/context.xml/WEB-INF/web.xml之类的内容,并获取有关您的webapp(数据库凭据等)的各种重要信息。

此外,Tomcat 5.0是如此痛苦地过时,你真的需要使用该程序。