Apache重定向到端口并屏蔽URL

时间:2013-09-03 18:35:09

标签: apache .htaccess redirect

我有一个Web服务器在不同的端口上运行两个站点。 IE:服务器:8081,服务器:8083 我设置了两个DNS记录并将其指向“我的服务器”

Dev.server.com和Pre.server.com

我希望Dev.server.com重定向到服务器:8083,但屏蔽URL以始终保持Dev.server.com和Pre.server.com重定向到服务器:8081但屏蔽URL始终保持预先。 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。

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

1 个答案:

答案 0 :(得分:1)

您希望您的反向代理在您的端口80 vhost中发生。因为您使用mod_rewrite 将浏览器重定向到网址,例如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.compre.server.com http:// Dev.server.com,方案后面有空格,并且://。因为http:// Dev.server.com不会是您要访问的主机名,所以apache会将所有内容默认为第一个vhost。这可能是你的第二次尝试有效的原因,因为dev和pre都默认为第一个vhost,因为端口80上没有匹配。