
Я пытаюсь перейти с использования 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.