我已经成功地使用 Tomcat 和 Apache 为端口 80 上的网站设置了 Railo。但是,我正在努力设置另一个使用相同域但端口不是 80 的设置。
我在端口 9080 上设置了第二个站点,并使用 SSL 证书和基本身份验证。我可以访问它并获得 SSL 证书和身份验证提示,但是一旦我通过它,Railo 就会输出默认页面(位于/opt/railo/tomcat/webapps/ROOT/index.cfm)。
就好像 Tomcat 没有从 Apache 获取第二个站点的服务器名,所以 Railo 知道要使用哪个文档库。是因为我正在尝试使用相同的域吗?我需要在 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(服务器.xml):
<Host name="sitename" appBase="webapps">
<Context path="" docBase="/web/sitename" />
</Host>
<Host name="sitename2" appBase="webapps">
<Context path="" docBase="/web/sitename2" />
</Host>
最佳答案
这里的问题是 Tomcat 配置。您不能拥有两个具有相同“站点名称”的主机。一个将覆盖另一个。理想情况下,您可以让 Tomcat 监听多个端口,就像使用 Apache 一样,但是 Coyote(Tomcat 的 Web 服务器)在这种功能方面不如 Apache 先进。我看到的关于在多个端口上运行 Tomcat 的大多数建议都建议在同一台机器上运行单独的 Tomcat 实例,所以这也是我向您推荐的,因为这似乎是普遍接受的。
如果您安装了 Tomcat 的第二个实例并在其上安装了 Railo,则可以配置 Apache 将进入您的第二个虚拟主机的请求传递给您的第二个 Tomcat 实例。例如,您可以让您的第二个 Tomcat 实例使用其 AJP 监听器监听端口 9009 而不是 8009,然后将您的 Apache 虚拟主机配置为代理对端口 9009 的请求,从而命中您的第二个 Tomcat 实例。
然后,在您的第二个实例中,您可以创建相同的主机条目但具有不同的文档库属性。
例如:
<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>
这不是对您正在做的事情的简单回答,但它会实现您的目标。
-乔丹
关于 Apache /Tomcat/Railo : Setting up two sites with same domain but two different ports,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9244653/