这是我的用例。
我希望使用JBoss 7为两个不同的webapps (war)服务,具体取决于在HTTP请求中使用的主机名:
app1.war服务。app2.war服务。我更希望appX.war被用作每个主机名的根上下文(访问https://appX.mydomain.com/index.html将使用appX.war/index.html文件),但我可以接受到https://appX.mydomain.com/appX/访问我的appX (X是1或2)。
此外,我希望为该配置使用一个IP &端口,但如果不使用这样的回答 & 就是那个和JBoss论坛上的那个帖子,这似乎是不可能的。这是另一种选择,但我宁愿不使用它。
我尝试用standalone模式(并使用不同的IP)来配置它。以下是我的standalone.xml的摘录:
...
<subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="app1.mydomain.com" native="true">
<connector name="https-app1" protocol="HTTP/1.1" scheme="https" socket-binding="app1-https" secure="true">
<ssl password="pass1" certificate-key-file="${jboss.server.config.dir}/cert/app1.mydomain.com.key" protocol="TLSv1" verify-client="false" certificate-file="${jboss.server.config.dir}/cert/app1.mydomain.com.crt"/>
</connector>
<connector name="https-app2" protocol="HTTP/1.1" scheme="https" socket-binding="app2-https" secure="true">
<ssl password="pass2" certificate-key-file="${jboss.server.config.dir}/cert/app2.mydomain.com.key" protocol="TLSv1" verify-client="false" certificate-file="${jboss.server.config.dir}/cert/app2.mydomain.com.crt"/>
</connector>
<virtual-server name="app1.mydomain.com" enable-welcome-root="false" default-web-module="app1">
<alias name="app1.mydomain.com"/>
</virtual-server>
<virtual-server name="app2.mydomain.com" enable-welcome-root="false" default-web-module="app2">
<alias name="app2.mydomain.com"/>
</virtual-server>
...
<interfaces>
<interface name="app1.mydomain.com">
<inet-address value="10.0.0.1"/>
</interface>
<interface name="app2.mydomain.com">
<inet-address value="10.0.0.2"/>
</interface>
...
<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
<socket-binding name="app1-https" interface="app1.mydomain.com" port="443" fixed-port="true"/>
<socket-binding name="app2-https" interface="app2.mydomain.com" port="443" fixed-port="true"/>
...但这似乎不像预期的那样有效..。
app1.war的欢迎文件(我认为这是由于default-virtual-server属性)app2.war欢迎文件有人有主意吗?
(我还发布了向JBoss用户论坛提出这个问题)
发布于 2013-01-02 09:44:59
最后,似乎不可能直接使用JBoss 7,我使用了Apache、应用程序的非根上下文和多个IP(最糟糕的是我想要的):
...
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
...
Listen 80
Listen 443
...
<VirtualHost IP1:80>
DocumentRoot "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs"
ServerName app1.mydomain.com:80
ServerAlias www.app1.mydomain.com
ServerAdmin admin@mydomain.com
ErrorLog "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/logs/app1.mydomain.com-error.log"
TransferLog "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/logs/app1.mydomain.com-access.log"
RewriteEngine On
RewriteRule ^/(.*)$ https://app1.mydomain.com/$1 [R]
</VirtualHost>
<VirtualHost IP1:443>
# General setup for the virtual host
DocumentRoot "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/htdocs"
ServerName app1.mydomain.com:443
ServerAlias www.app1.mydomain.com
ServerAdmin admin@mydomain.com
ErrorLog "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/logs/app1.mydomain.com-error.log"
TransferLog "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/logs/app1.mydomain.com-access.log"
ProxyPass /app1 ajp://localhost:8009/app1
ProxyPassReverse /app1 https://app1.mydomain.com/app1
RewriteEngine On
RewriteRule ^/$ /app1/ [R]
# SSL Engine Switch:
# Enable/Disable SSL for this virtual host.
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
# Server Certificate:
SSLCertificateFile "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/conf/SSL/app1.mydomain.com.crt"
# Server Private Key:
SSLCertificateKeyFile "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/conf/SSL/app1.mydomain.com.key"
# Server Certificate Chain:
SSLCertificateChainFile "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/conf/SSL/ca-root.crt"
# SSL Protocol Adjustments:
BrowserMatch "MSIE [2-5]" \
nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
# Per-Server Logging:
# The home of a custom SSL log file. Use this when you want a
# compact non-error SSL logfile on a virtual host basis.
CustomLog "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/logs/app1.mydomain.com-ssl.log" "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost> 这是给app1的。
对于app2,只需复制此配置,将app1替换为app2,将IP1替换为IP2。
发布于 2012-12-18 17:31:46
我相信你有两个选择。
选项1:使用JBoss虚拟主机
为此,必须将虚拟主机项添加到web子服务中。你当时在做的事。
我认为你错过的部分是在你的网络应用程序中将<virtual-host>标签添加到你的jboss-web.xml文件中。
有关设置具有JBoss AS7的虚拟主机的快速说明,请参考以下链接。
选项2:使用Apache
这将是我喜欢的方法,特别是对于生产用例。您可以让Apache成为您的web服务器,并让它将传入的请求代理到JBoss。Apache还将负责SSL。
例如,您可以通过mod_jk实现这一点,这是一个负载均衡器。mod_jk通过AJP连接器将流量引导到应用程序,该连接器应该可以使用JBoss中的HA配置文件。
由于您使用的是mod_jk和HA配置文件,您可以继续对应用程序进行集群化,并在您愿意的情况下对这些集群进行负载平衡。
如果你还有什么问题,请告诉我。
https://stackoverflow.com/questions/13930677
复制相似问题