Как установить Railo и Apache в Ubuntu и заставить их передавать базовое имя пользователя для аутентификации в Railo?

Как установить Railo и Apache в Ubuntu и заставить их передавать базовое имя пользователя для аутентификации в Railo?

Я пытаюсь перейти с использования Adobe ColdFusion на использование Railo. Приложение, которое я пытаюсь перенести, полагается на проверку базовой аутентификации веб-сервером, но затем ему нужно узнать имя пользователя аутентифицированного пользователя с помощью переменной #REMOTE_USER#.

Я попробовал сделать дамп области cgi, и похоже, что переменная просто не устанавливается. Я ковырялся в этом около недели и застрял.

решение1

Итак, я наконец-то разобрался. Как и было сказано, мне потребовалась не менее недели, чтобы получить это. Итак, я делюсь своими заметками о том, как настроить новую машину для этого, чтобы никому не пришлось тратить столько времени, сколько мне, на то, чтобы разобраться с этим. Главное, похоже, то, что вы хотите проксировать railo, используя протокол AJP вместо HTTP, и вы хотите сообщить tomcat, что ему не нужно выполнять аутентификацию (что позволит ему передавать переменную нетронутой).

Давайте начнем:

apt-get install apache2 mysql-server apache2-utils
a2enmod proxy_ajp
service apache2 restart

.

Установить Railo:

Загрузите стандартную версию установщика 64 бит, указанную на страницеhttp://www.getralo.org/index.cfm/download/.

Сделайте его исполняемым:

chmod +x <file_you_just_downloaded>

Запустить его:

./<file_you_just_downloaded>

Выберите все значения по умолчанию.

.

Хорошо, теперь отредактируйте файлы конфигурации следующим образом:

=== modified file '/etc/apache2/apache2.conf'
--- /etc/apache2/apache2.conf 2014-10-10 00:22:11 +0000
+++ /etc/apache2/apache2.conf 2014-10-10 00:27:48 +0000
@@ -223,18 +223,24 @@
<IfModule mod_proxy.c>
<Proxy *>
Allow from 127.0.0.1
+
+ AuthType Basic
+ AuthName "Employee Login"
+ AuthBasicProvider file
+ AuthUserFile /etc/apache2/.htpasswd
+ Require valid-user
</Proxy>
ProxyPreserveHost On
- ProxyPassMatch ^/(.+\.cf[cm])(/.*)?$ http://127.0.0.1:8888/$1$2
- ProxyPassMatch ^/(.+\.cfchart)(/.*)?$ http://127.0.0.1:8888/$1$2
- ProxyPassMatch ^/(.+\.cfml)(/.*)?$ http://127.0.0.1:8888/$1$2
+ ProxyPassMatch ^/(.+\.cf[cm])(/.*)?$ ajp://127.0.0.1:8009/$1$2
+ ProxyPassMatch ^/(.+\.cfchart)(/.*)?$ ajp://127.0.0.1:8009/$1$2
+ ProxyPassMatch ^/(.+\.cfml)(/.*)?$ ajp://127.0.0.1:8009/$1$2
# optional mappings
#ProxyPassMatch ^/flex2gateway/(.*)$ http://127.0.0.1:8888/flex2gateway/$1
#ProxyPassMatch ^/messagebroker/(.*)$ http://127.0.0.1:8888/messagebroker/$1
#ProxyPassMatch ^/flashservices/gateway(.*)$ http://127.0.0.1:8888/flashservices/gateway$1
#ProxyPassMatch ^/openamf/gateway/(.*)$ http://127.0.0.1:8888/openamf/gateway/$1
#ProxyPassMatch ^/rest/(.*)$ http://127.0.0.1:8888/rest/$1
- ProxyPassReverse / http://127.0.0.1:8888/
+ ProxyPassReverse / ajp://127.0.0.1:8009/
</IfModule>



=== modified file '/etc/apache2/sites-available/000-default.conf'
--- /etc/apache2/sites-available/000-default.conf 2014-10-10 00:12:20 +0000
+++ /etc/apache2/sites-available/000-default.conf 2014-10-10 00:31:59 +0000
@@ -26,6 +26,13 @@
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
+ <Directory /var/www/html>
+ AuthType Basic
+ AuthName "Employee Login"
+ AuthBasicProvider file
+ AuthUserFile /etc/apache2/.htpasswd
+ Require valid-user
+ </Directory>
</VirtualHost>

Используя программу htpasswd, создайте .htpasswdфайл в /etc/apache2Если вы хотите, чтобы некоторые сайты проходили аутентификацию, а некоторые нет, вы можете поместить раздел прокси в определение виртуальных хостов и при необходимости настроить каждый виртуальный хост.

Редактировать/opt/railo/tomcat/config/server.xml

=== modified file '/opt/railo/tomcat/config/server.xml'
--- /opt/railo/tomcat/config/server.xml 2014-10-10 00:34:48 +0000
+++ /opt/railo/tomcat/config/server.xml 2014-10-10 00:36:33 +0000
@@ -89,7 +89,7 @@
-->

<!-- Define an AJP 1.3 Connector on port 8009 -->
- <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
+ <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" tomcatAuthentication="false" />
+ <Connector port="8010" protocol="AJP/1.3" tomcatAuthentication="false" secure="true" scheme="https"/>

<!-- An Engine represents the entry point (within Catalina) that processes -->

Перезапустите Railo/Tomcat:

/opt/railo/railo_ctl restart

Теперь Railo должен поместить базовое имя пользователя аутентификации в cgi.remote_user. Я думал, что мне, возможно, придется попробовать поместить что-то, что копирует это в #REMOTE_USER# в localconfig/application.cfm. Но это уже, кажется, одно и то же. Второй коннектор AJP на порту 8010 предназначен для проксирования с виртуальных хостов с поддержкой SSL в Apache. Так что если у вас есть виртуальный хост с поддержкой SSL, проксируйте на порт 8010 вместо 8009. Таким образом, Railo установит переменные, которые сообщат запущенному ColdFusion, что он использует SSL.

Связанный контент