我在Tomcat 6.0.32中运行Railo 3。 tomcat服务器由Apache 2.2.20提供。 Tomcat和Apache是openCSW的预构建二进制文件。 Railo只是在tomcat的autodeploy dir webapps中部署的最新构建战。
当我尝试访问tomcat服务器上的railso和内容时,一切正常。
然而,当tomcat上的铁路将我重定向到自己时,它失败了。大多数情况下,当cfm脚本使用 CGI.script_name 时,它将返回错误。
在Apache方面,内容可在www.hostname.com上获得。 Apache在www.hostname.com:8009/railo/content上通过AJP将用户重定向到tomcat。
tomcat上的脚本(取自开放的OAuth示例)可在以下网址获得:
/opt/csw/share/tomcat6/webapps/railo/content/oauth_test/examples/admin_consumers.cfm
当我访问它并尝试执行某些操作时,它会使用一些参数调用自身,但此时,railo会转出错误,抱怨无法找到该文件:
Page /content/railo/content/oauth_test/examples/admin_consumers.cfm [/opt/csw/share/tomcat6/webapps/railo/content/railo/content/oauth_test/examples/admin_consumers.cfm] not found
正如您所见,railo从tomcat添加了两倍的相对路径: / railo / content / railo / content
这是我在Apache中虚拟主机的配置:
<VirtualHost *:443>
ServerName www.hostname.com
DocumentRoot "/opt/www/hostname/htdocs/"
ProxyRequests Off
<proxy *="">
Order deny,allow
Allow from all
</proxy>
ProxyPass / ajp://www.hostname.com:8009/railo/content/
ProxyPassReverse / http://www.hostname.com:8888/railo/content/
</VirtualHost>
我为ProxyPassReverse指令尝试了几个变种,但到目前为止没有运气。基于网络上的大量搜索(The Mystery of ProxyPassReverse),我尝试使用proxypassreverse:
ProxyPassReverse / ajp://www.hostname.com:8009/railo/content/
ProxyPassReverse / http://www.hostname.com:8888/railo/content/
ProxyPassReverse / http://localhost:8888/railo/content/
ProxyPassReverse / https://www.hostname.com
tomcat服务器还有一个如下定义的虚拟主机:
<Host name="www.hostname.com">
<Context path="" docBase="/opt/csw/share/tomcat6/webapps/railo/content" />
</Host>
但每次,我总是从Railo那里得到错误。
有没有人见过Railo或CGI这个问题,并且知道如何修复它?
答案 0 :(得分:0)
您指定了两次“/ railo / content”。进入“docBase”属性并再次进入Proxy属性。因此,通过Apache代理的请求将在其请求路径中具有两次“railo / content /”,因为您将其列出两次:一次在Apache中,另一次在Tomcat中。
尝试不使用ProxyPassReverse属性中的/ railo / content /:
ProxyPassReverse / http://www.hostname.com:8888/
这将让Tomcat配置自己添加/ railo / content / bit。