JSP 显示 https 后的源代码

标签 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 url。

我确定这是一个配置设置,但我不知道它可能是什么。有一个问题是我们发布的 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

最佳答案

您需要确保您的 JkMount指令在所有 <VirtualHost> 中都是重复的您在 httpd.conf 中拥有的部分.如果你没有 JkMount对于其中一种情况,Apache httpd 将改为处理请求。

你的问题也说明你是Alias将 URI 发送到您的 webapp 的 docBase。这不是推荐的技术,因为它可以允许远程客户端请求诸如 /META-INF/context.xml 之类的东西。或 /WEB-INF/web.xml并获取有关您的网络应用程序的各种重要信息(数据库凭据等)。

另外,Tomcat 5.0 已经过时了,您真的需要继续使用该程序。

关于JSP 显示 https 后的源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11436217/

相关文章:

java - 如何循环 INNER JOIN

tomcat - Tomcat 中每个 webapp 的 io.dropwizard.metrics

java - 通过角色检查在 Tomcat 上集成 Spring Security 和 Waffle

java - Apache/mod_jk 与 Spring Security

ubuntu - Ubuntu 11.10 下的 Zend 框架 : internal server error with virtual server

eclipse - Stripes 看不到我的 ActionBean

java - jsp是如何工作的?

java - 在 Eclipse 服务器中运行的简单 Spring 应用程序,但未部署在 Tomcat 中

apache2 - 无法在 Ubuntu 14.04 上安装 apache2

jsp - 调试 JSP 文件的最佳方法是什么,就像我们调试 Java 类一样?