JSP显示https背后的源代码
这是一个奇怪的问题。我有一个网站没有正确地呈现它的代码。它是一个Tomcat5.0.27-2服务器(我知道…很旧)和Apache2.0.46-77服务器。我们目前无法升级它们,因为这是一个比我们现在允许的更大的变化 不管怎么说,发生的情况如下: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,
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