我使用apache2 httpd服务器2.2.15,CentOs 2.6.32,Wildfly 8.1.0.Final,VPS和plesk 12.0.18,1域名:something.com。一切都在一个VPS上。
我希望以下链接有效:
1)something.com [重定向到localhost的wildfly应用程序:8080 / app1]
2)something.com/repos/app1 [svn repository在这里/ SVN服务器/ subversion 1.8.10 /端口80在这里使用]
我在apache2中找到了正确的VirtualHost配置。 问题:如何在apache2中配置VirtualHost(我的位置:/etc/httpd/conf/httpd.conf)?
我目前的1)工作配置是:
<VirtualHost *:80>
ServerName something.com
ServerAlias www.something.com something.com
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://localhost:8080/app1/
ProxyPassReverse / http://localhost:8080/app1/
RewriteEngine On
RewriteCond %{THE_REQUEST} /app1/
RewriteRule ^/app1/(.*)$ /$1 [PT]
</VirtualHost>
坦率地说,我尝试了不同的VirtualHost配置,但没有一个适合我。我不想附加10个错误的配置,所以我只附加了一个用于1)。
在app1应用程序的jboss-web.xml(w WEB-INF)中是:
<jboss-web>
<virtual-host>myVirtualServerName</virtual-host>
</jboss-web>
并使用jboss-cli.sh我添加了:
/subsystem=undertow/server=default-server/host=myVirtualServerName/:add(default-web-module=app1.web.war,alias=["something.com"])
这是我尝试这样做的第3天。我知道有类似的主题但类似并不意味着相同。或许我不知道哪种解决方案应该有效?或者可能有多个解决方案?
建议高度赞赏。提前谢谢。
我试过了:
I)
<VirtualHost *:80>
ServerName something.com
ServerAlias www.something.com something.com
ProxyRequests Off
ProxyPreserveHost On
ProxyPass /repos/app1/trunk http://localhost/repos/app1/trunk/
ProxyPassReverse /repos/app1/trunk http://localhost/repos/app1/trunk/
ProxyPass / http://localhost:8080/app1/
ProxyPassReverse / http://localhost:8080/app1/
RewriteEngine On
RewriteCond %{THE_REQUEST} /repos/app1/trunk/
RewriteRule ^/repos/app1/trunk/(.*)$ /$1 [PT]
RewriteCond %{THE_REQUEST} /app1/
RewriteRule ^/app1/(.*)$ /$1 [PT]
</VirtualHost>
但它不起作用
II) 此解决方案也不起作用:
<VirtualHost *:80>
ServerName something.com
ServerAlias www.something.com something.com
ProxyRequests Off
ProxyPreserveHost On
<Location /repos/app1/>
ProxyPass http://localhost/repos/app1/
ProxyPassReverse http://localhost/repos/app1/
ProxyPassReverseCookiePath / /repos/app1/
</Location>
<Location />
ProxyPass http://localhost:8080/app1/
ProxyPassReverse http://localhost8080/app1/
ProxyPassReverseCookiePath / /app1/
</Location>
</VirtualHost>
答案 0 :(得分:1)
您需要了解一些事实。 当使用Apache mod_proxy和Wildfly时,请求将采用这种方式:
REQUEST -> APACHE <-> Wildfly Undertow
RESPONSE <- APACHE <-> Wildfly Undertow
考虑到这一点,配置应该很容易。 每个请求和响应只与apache交谈,而不是与底层交谈。因此,除了需要的底部的http_connector之外,没有其他设置。
但是您需要确保apache配置始终到达Undertow。根据您的方法,SVN应用应如下所示:
ProxyPass /repos/app1/trunk http://localhost:8080/repos/app1/trunk/
ProxyPassReverse /repos/app1/trunk http://localhost:8080/repos/app1/trunk/
请注意主持人背后的端口。