这是一个奇怪的问题。我有一个网站没有正确呈现它的代码。它是 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>
worker.properties
worker.list=worker1
worker.worker1.type=ajp13
worker.worker1.host=localhost
work.worker1.port=8009
当我重新启动 httpd 时,没有错误,它会看到 java_home 和 catalina_home