Apache:子域,虚拟主机和动态DNS

时间:2014-12-26 22:52:58

标签: apache ssl dynamic dns virtualhost

我目前的设置是这样的。我有一个注册域名。通过我的域名提供商,我已将我的域名指向动态IP地址。所以mysite.com指向97.89.120.x

我有dd-wrt路由器,它保持我的动态IP更新和端口转发所有端口80和443请求到我的apache服务器IP 192.168.121.50(这里没什么真正的疯狂)

我的apache服务器将所有端口80请求重定向到端口443 cat / etc / apache2 / sites-available / default

<VirtualHost *:80>
    RewriteEngine on
    ReWriteCond %{SERVER_PORT} !^443$
    RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]
</VirtualHost>

cat / etc / apache2 / sites-available / default-ssl

<VirtualHost _default_:443>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/mycloud
</VirtualHost>

这一切都像冠军一样,非常直接。

我想添加cloud.mysite.com的子域名。所以mysite.com和cloud.mysite.com都指向相同的动态IP 97.89.120.x从我的dd-wrt路由器我端口转发所有端口80和443请求到我的环境中的新服务器192.168.121.60 < / p>

我希望这台新主机上的apache服务器托管mysite.com,并将cloud.mysite.com的请求转发到其他服务器192.168.121.50,并重定向到https / ssl / ports 443。

那么我究竟如何设置虚拟服务器呢?我尝试过与此相似但没有成功。

NameVirtualHost *
    <VirtualHost *:80>
    ServerName www.mysite.com
    DocumentRoot /var/www/html
</VirtualHost>

<VirtualHost *:80>
    ServerName www.cloud.mysite.com
    ServerAlias 192.168.121.50
    DocumentRoot /var/www/mycloud
</VirtualHost>

如何将子域重定向到其他服务器并使其工作?

2 个答案:

答案 0 :(得分:0)

您对虚拟主机的理解有误。 vhosts的目的是在单个Web服务器上托管多个站点。使用您的方法执行此操作并非不可能,但如果您要将多个Web服务器和服务发布到一个域中的www,则可以通过其他方式对其进行组织。

您可以通过DNS,网关,反向Proxing,路由以及其他方法来实现此目的。

我建议找到一种方法,ddwrt路由器将组织请求并将它们交给所需的网络服务器。

在ddwrt上,就像反向代理和负载均衡器的例子一样,你可以用Pound执行此操作:http://www.dd-wrt.com/wiki/index.php/Pound

如果您有其他问题,请与我们联系。我会编辑我的帖子。但是从这一点来看,这是一个关于serverfault的问题,而不是stackoverflow的问题。

答案 1 :(得分:0)

您需要使用192.168.121.60作为192.168.121.50的代理。但这可能不是实现这一目标的最好/最聪明的方法。将Web服务器代理为另一个??

您已在cloud.mysite.com上设置了192.168.121.60。使用mod_proxy_balancer ,看起来如下所示。

<VirtualHost *:80>
  ServerName www.cloud.mysite.com
  ServerAlias cloud.mysite.com

  ProxyRequests Off
 <Proxy balancer://mycluster>
   BalancerMember http://192.168.121.50
 </Proxy>
 ProxyPass / balancer://mycluster

</VirtualHost>

@LukasF指出的最佳方式是将这两个站点托管在一个Web服务器上 希望有所帮助!

相关问题