我已经成功地使用Tomcat和Apache为端口80上的网站设置了Railo。但是我很难设置另一个使用相同域但是80以外的端口。
我在端口9080上设置了第二个站点,并使用SSL证书和基本身份验证。我可以访问它并获得SSL证书和身份验证提示,但是一旦我完成了这一点,Railo就会输出默认页面(位于/opt/railo/tomcat/webapps/ROOT/index.cfm)。
就好像Tomcat没有从Apache获取第二个站点的服务器名称所以Railo知道要使用什么docbase。是因为我正在尝试使用相同的域名吗?我是否需要在Tomcat配置中的某处指定端口9080?
我已在下方粘贴了我的配置。非常感谢任何帮助。
的Apache:
<VirtualHost *:80>
ServerName sitename
ServerAlias domainname
DirectoryIndex index.cfm index.html index.htm
DocumentRoot "/web/sitename"
<Directory "/web/sitename">
allow from all
Options +Indexes
</Directory>
</VirtualHost>
Listen 9080
<VirtualHost *:9080>
ServerName sitename2
ServerAlias domainname
DirectoryIndex index.cfm index.html index.htm
SSLEngine on
SSLCertificateFile /web/ssl/server.crt
SSLCertificateKeyFile /web/ssl/server.key
DocumentRoot "/web/sitename2
<Directory "/web/sitename2">
allow from all
Options -Indexes
AuthName .. basic auth settings ..
</Directory>
</VirtualHost>
Tomcat(server.xml):
<Host name="sitename" appBase="webapps">
<Context path="" docBase="/web/sitename" />
</Host>
<Host name="sitename2" appBase="webapps">
<Context path="" docBase="/web/sitename2" />
</Host>
答案 0 :(得分:1)
这里的问题是Tomcat配置。您不能拥有两个具有相同“sitename”的主机。一个会覆盖另一个。理想情况下,您可以让Tomcat听取多个端口,就像使用Apache一样,但Coyote(Tomcat的Web服务器)在这种功能方面并不像Apache那样先进。我见过的关于在多个端口上运行Tomcat的大多数建议建议在同一台机器上运行Tomcat的单独实例,这也是我向你推荐的内容,因为它似乎是普遍接受的。
如果您安装了第二个Tomcat实例并在其上安装了Railo,则可以将Apache配置为将进入第二个虚拟主机的请求传递给第二个Tomcat实例。例如,您可以让您的第二个Tomcat实例使用它的AJP侦听器来侦听端口9009而不是8009,然后将您的Apache虚拟主机配置为代理请求到端口9009,从而命中您的第二个Tomcat实例。
然后,在第二个实例中,您可以创建相同的主机条目,但具有不同的docbase属性。
例如:
<VirtualHost *:80>
ServerName sitename
ServerAlias domainname
DirectoryIndex index.cfm index.html index.htm
DocumentRoot "/web/sitename"
<Directory "/web/sitename">
allow from all
Options +Indexes
</Directory>
<Proxy *>
Allow from 127.0.0.1
</Proxy>
ProxyPreserveHost On
ProxyPassMatch ^/(.+\.cf[cm])(/.*)?$ ajp://localhost:8009/$1$2
</VirtualHost>
Listen 9080
<VirtualHost *:9080>
ServerName sitename2
ServerAlias domainname
DirectoryIndex index.cfm index.html index.htm
SSLEngine on
SSLCertificateFile /web/ssl/server.crt
SSLCertificateKeyFile /web/ssl/server.key
DocumentRoot "/web/sitename2
<Directory "/web/sitename2">
allow from all
Options -Indexes
AuthName .. basic auth settings ..
</Directory>
<Proxy *>
Allow from 127.0.0.1
</Proxy>
ProxyPreserveHost On
ProxyPassMatch ^/(.+\.cf[cm])(/.*)?$ ajp://localhost:9009/$1$2
</VirtualHost>
对于你正在做的事情,这不是一个简单的答案,但它会实现你的目标。
-Jordan