如何在 Ubuntu 上安装 Railo 和 Apache 并让其将基本身份验证用户名传递给 Railo?

如何在 Ubuntu 上安装 Railo 和 Apache 并让其将基本身份验证用户名传递给 Railo?

我正在尝试从使用 Adob​​e ColdFusion 转向使用 Railo。我尝试迁移的应用程序依赖于让 Web 服务器检查基本身份验证,但随后需要使用变量来了解经过身份验证的用户的用户名#REMOTE_USER#

我尝试转储 cgi 范围,但似乎变量未设置。我花了大约一周的时间努力实现这一点,但一直卡住。

答案1

所以,我终于搞明白了。就像它说的,我花了至少一周的时间才搞明白。所以,我分享了我关于如何为此设置一台新机器的笔记,这样其他人就不必像我一样花那么多时间来弄清楚这一点。关键似乎是你想使用 AJP 协议而不是 HTTP 代理到 railo,并且你想告诉 tomcat 它不需要进行身份验证(这将使它能够不受影响地传递变量)。

让我们开始吧:

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

安装Railo:

下载页面上列出的标准安装程序 64 位版本http://www.getrailo.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 中。我想我可能必须尝试将一些内容复制到 localconfig/application.cfm 中的 #REMOTE_USER#。但这似乎已经是同一件事了。端口 8010 上的第二个 AJP 连接器供您从 Apache 中启用 SSL 的虚拟主机进行代理。因此,如果您有启用 SSL 的虚拟主机,请代理到端口 8010 而不是 8009。这样,Railo 将设置变量,让正在运行的 ColdFusion 知道它正在使用 SSL。

相关内容