gpt4 book ai didi

apache - JBoss 7 多根上下文 Web 应用程序

转载 作者:行者123 更新时间:2023-12-02 11:45:40 24 4
gpt4 key购买 nike

我需要在我的 Apache2+ JBoss7.1 环境中配置两个网站:www.foo.com 和 www.bar.net。

Apache 站点配置示例(除了站点名称之外,它们彼此相似):

<VirtualHost *:80>
ServerAdmin foo@bar.com
ServerName www.foo.com

DocumentRoot /var/www/foo
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/foo>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined

SetEnvIf Request_URI "/photos/*" no-jk
JkMount / ajp13
JkMount /* ajp13

</VirtualHost>

在 JBossstandalone.xml 中我有:

<subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host" native="false">
<connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>
<connector name="ajp" protocol="AJP/1.3" scheme="http" socket-binding="ajp"/>
<virtual-server name="default-host" enable-welcome-root="false" default-web-module="bar">
<alias name="localhost"/>
<alias name="www.bar.net"/>
</virtual-server>
<virtual-server name="foo" enable-welcome-root="false" default-web-module="foo">
<alias name="www.foo.com"/>
</virtual-server>
</subsystem>

虽然两个应用程序都有 jboss-web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
<security-domain>java:/jaas/foo</security-domain>
<context-root>/</context-root>
</jboss-web>

部署 foo.war 会导致:

安装:无法处理部署“foo.war”的安装阶段

Caused by: org.jboss.msc.service.DuplicateServiceException: Service jboss.web.deployment.default-host./.realm is already registered

什么是正确的配置?错误在哪里?

最佳答案

我认为问题在于您为两个应用程序定义了相同的上下文根。您不能同时拥有两个具有相同上下文根的应用程序。一种可能的解决方案是为每个应用程序定义不同的上下文(分别为/foo 和/bar),并在每个 Apache 虚拟主机中使用 ProxyPass 指令。

<VirtualHost *:80>
ServerAdmin foo@bar.com
ServerName www.foo.com
...
ProxyPass / http://yourjbossserver:port/foo/
ProxyPassReverse / http://yourjbossserver:port/foo/
</VirtualHost *:80>

<VirtualHost *:80>
ServerAdmin foo@bar.com
ServerName www.bar.com
...
ProxyPass / http://yourjbossserver:port/bar/
ProxyPassReverse / http://yourjbossserver:port/bar/
</VirtualHost *:80>

这样您就可以分别通过以下地址直接访问您的应用程序:www.bar.com 和 www.foo.com。 (请注意,如果您有一个 Apache 充当代理,并使用它自己的虚拟主机,则无需定义 JBoss 虚拟主机)。

一个简单但完整的示例是(在本例中,我配置了 jboss jmx-console,与 apache 在同一台机器上运行,可以从 www.foo.com 访问):

<VirtualHost *:80>
ServerName www.foo.com
ProxyPass / http://localhost:8080/jmx-console/
ProxyPassReverse / http://localhost:8080/jmx-console/
</VirtualHost>

请注意,您需要在地址末尾添加反斜杠。

关于apache - JBoss 7 多根上下文 Web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14684069/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com