繁体   English   中英

Apache2、VirtualHost、CentOs:一台服务器上的根上下文和子上下文

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM