[英]Apache2, VirtualHost, CentOs: root context and subcontext on one server
我使用 apache2 httpd 服务器 2.2.15、CentOs 2.6.32、Wildfly 8.1.0.Final、带有 plesk 12.0.18 的 VPS,1 个域:something.com。 一切都在一个 VPS 上。
我想让以下链接工作:
1) something.com [重定向到 localhost:8080/app1 上的 wildfly 应用程序]
2)something.com/repos/app1【这里是svn仓库/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"])
这是我尝试这样做的第三天。 我知道有相似的主题,但相似并不意味着相同。 或者我不知道哪种解决方案应该有效? 或者可能有不止一种解决方案?
高度赞赏的建议。 提前致谢。
我试过:
一世)
<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>
有一些事实你需要了解。 使用 Apache mod_proxy 和 Wildfly 时,请求将按以下方式进行:
REQUEST -> APACHE <-> Wildfly Undertow
RESPONSE <- APACHE <-> Wildfly Undertow
考虑到这张图片,配置应该很容易。 每个请求和响应都只与 apache 交谈,而不是与 undertow 交谈。 因此,除了需要在 undertow 端的 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/
请注意主机后面的端口。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.