1

我有一台 Web 服务器在不同的端口上运行两个站点。IE: server:8081 and server:8083 我设置了两条 DNS 记录并指向“我的服务器”</p>

Dev.server.com 和 Pre.server.com

我希望 Dev.server.com 重定向到 server:8083 但屏蔽 URL 以始终保持 Dev.server.com 和 Pre.server.com 重定向到 server:8081 但屏蔽 URL 以始终保持 pre.server.com

如果我这样设置它们

<VirtualHost *:80>
ServerName http:// Dev.server.com
ProxyRequests off
ProxyPass / http://server:8083
ProxyPassReverse / http://server:8083
</VirtualHost>

<VirtualHost *:80>
ServerName http:// Pre.server.com
ProxyRequests off
ProxyPass / http://server:8081
ProxyPassReverse / http://server:8081
</VirtualHost>

一切都路由到 Dev 实例,没有任何东西到达 Pre 实例

我是这样设置的;

<VirtualHost *:80>
ServerName http:// Dev.server.com
RewriteEngine On
RewriteCond %{HTTP_HOST} ^dev\.server\.com$ [NC]
RewriteRule ^(.*)$ http:// Dev.server.com:8083$1 [R]
RewriteCond %{HTTP_HOST} ^pre\.server\.com$ [NC]
RewriteRule ^(.*)$ http://pre. server.com:8081$1 [R]
</VirtualHost>
Listen 0.0.0.0:8083
Listen 0.0.0.0:8081
<VirtualHost *:8083>
ServerName dev. server.com
ProxyRequests off
ProxyPass / http:// server.com:8083/jde/owhtml/
ProxyPassReverse / http:// server.com:8083/jde/owhtml/
Oc4jMount /jde HTML_DV_8083
Oc4jMount /jde/* HTML_DV_8083
</VirtualHost>

<VirtualHost *:8081>
ServerName pre.server.com
ProxyRequests off
ProxyPass / http:// server.com:8081/jde/owhtml/
ProxyPassReverse / http:// server.com:8081/jde/owhtml/
Oc4jMount /jde HTML_PY_8081
Oc4jMount /jde/* HTML_PY_8081
</VirtualHost>

这非常适合路由,但不会屏蔽 URL。它将端口添加到我们不希望发生的 URL 中。

有人对我做错了什么有任何想法吗?

4

1 回答 1

1

您希望您的反向代理发生在您的端口 80 虚拟主机中。因为您使用 mod_rewrite将浏览器重定向到类似 的 URL http://Dev.server.com:8083/,所以浏览器将看到这些。您只需要 80 端口上的 2 个虚拟主机:

<VirtualHost *:80>
  ServerName dev.server.com

  ProxyRequests off
  ProxyPass / http://server.com:8083/jde/owhtml/
  ProxyPassReverse / http://server.com:8083/jde/owhtml/
  Oc4jMount /jde HTML_DV_8083
  Oc4jMount /jde/* HTML_DV_8083
</VirtualHost>

<VirtualHost *:80>
  ServerName pre.server.com

  ProxyRequests off
  ProxyPass / http://server.com:8081/jde/owhtml/
  ProxyPassReverse / http://server.com:8081/jde/owhtml/
  Oc4jMount /jde HTML_PY_8081
  Oc4jMount /jde/* HTML_PY_8081
</VirtualHost>

请注意,“ServerName”是dev.server.comand pre.server.com,而不是 http:// Dev.server.com在 scheme 和 :// 后面有空格。因为http:// Dev.server.com不会是您要访问的主机名,所以 apache 将所有内容默认为第一个虚拟主机。这可能是您第二次尝试有效的原因,因为 dev 和 pre 默认为第一个 vhost,因为端口 80 上没有匹配项。

于 2013-09-03T19:25:09.287 回答