JSP显示https背后的源代码

JSP显示https背后的源代码,jsp,tomcat,apache2,Jsp,Tomcat,Apache2,这是一个奇怪的问题。我有一个网站没有正确地呈现它的代码。它是一个Tomcat5.0.27-2服务器(我知道…很旧)和Apache2.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,

这是一个奇怪的问题。我有一个网站没有正确地呈现它的代码。它是一个Tomcat5.0.27-2服务器(我知道…很旧)和Apache2.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 url

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

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

<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时,没有错误,它会看到java_home和catalina_home

您需要确保您的
JkMount
指令在
httpd.conf
中的所有
部分重复。如果其中一种情况下没有
JkMount
,那么apachehttpd将为请求提供服务

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


而且,Tomcat5.0已经过时得很厉害,你真的需要使用这个程序

您需要确保您的
JkMount
指令在
httpd.conf
中的所有
部分都是重复的。如果其中一种情况下没有
JkMount
,那么apachehttpd将为请求提供服务

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


而且,Tomcat5.0已经过时得很厉害,你真的需要使用这个程序

很好地展示了如何重写URL。很好地演示了如何重写URL。我在httpd.conf文件中没有看到任何别名。不过,我确实看到它们列在server.xml文件的服务部分的几个主机下。你在说什么?正如您在上面看到的,没有jkuriet,只有Locations和JkUriSet命令。您更喜欢使用
JkUriSet
?在任何情况下,您都必须在所有
VirtualHost
部分中复制这些指令,因为否则,apachehttpd不知道如何将请求代理给Tomcat。如果您得到的是原始JSP代码,那么Tomcat几乎肯定不会收到请求——它由httpd提供服务。我们得到一个关于它是无效值的错误。(我希望我能升级该死的服务器)。我还试着将https设置为开启状态,主机名为www.mysite.com,并重写指向的规则。我把它放在上面的现有条件和规则之后。我甚至在虚拟主机之外尝试过。仍然将原始JSP显示为文本(根本没有html呈现)。您的
JkWorkersFile
指令是什么样子的?你把它放在哪里了(在httpd.conf中)?该文件包含什么?我在任何conf文件中都没有看到JKWorkers文件。不过我有一个workers2.properties,在httpd.conf文件中没有看到任何别名。不过,我确实看到它们列在server.xml文件的服务部分的几个主机下。你在说什么?正如您在上面看到的,没有jkuriet,只有Locations和JkUriSet命令。您更喜欢使用
JkUriSet
?在任何情况下,您都必须在所有
VirtualHost
部分中复制这些指令,因为否则,apachehttpd不知道如何将请求代理给Tomcat。如果您得到的是原始JSP代码,那么Tomcat几乎肯定不会收到请求——它由httpd提供服务。我们得到一个关于它是无效值的错误。(我希望我能升级该死的服务器)。我还试着将https设置为开启状态,主机名为www.mysite.com,并重写指向的规则。我把它放在上面的现有条件和规则之后。我甚至在虚拟主机之外尝试过。仍然将原始JSP显示为文本(根本没有html呈现)。您的
JkWorkersFile
指令是什么样子的?你把它放在哪里了(在httpd.conf中)?该文件包含什么?我在任何conf文件中都没有看到JKWorkers文件。不过,我确实有一个工人。
<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>    
<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>    
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>
worker.list=worker1

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