ProxyPassReverse к Tomcat, добавление пути к URL - PullRequest
1 голос
/ 26 января 2012

Я использую Railo 3 в Tomcat 6.0.32.На сервере Tomcat работает Apache 2.2.20.Tomcat и Apache - это предварительно собранные двоичные файлы из openCSW.Railo - это только последняя сборка, развернутая в веб-приложениях tomcat для autodploy dir.

Все работает нормально, когда я пытаюсь получить доступ к railo и контенту на сервере tomcat.

Однако, когда Railo на tomcat перенаправляет меня к себе, он терпит неудачу.В основном, когда скрипт cfm использует CGI.script_name , он будет возвращен неправильно.

На стороне Apache контент доступен на www.hostname.com.Apache перенаправляет пользователя на tomcat через AJP на www.hostname.com:8009/railo/content.

Сценарий на 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, но пока безуспешно.Основываясь на обширных поисках в Интернете ( 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 или CGI, и есть идея, как ее исправить?

1 Ответ

0 голосов
/ 27 января 2012

Вы указываете "/ railo / content" дважды. Один раз в вашем атрибуте "docBase" и снова в ваших атрибутах Proxy. Таким образом, запросы, передаваемые через Apache, будут иметь "railo / content /" дважды в своих путях запросов, потому что он у вас есть в списке дважды: один раз в Apache, другой раз в Tomcat.

Попробуйте отключить / railo / content / в атрибуте ProxyPassReverse:

ProxyPassReverse / http://www.hostname.com:8888/

Это позволит конфигу Tomcat добавлять бит / railo / content / самостоятельно.

...