我目前的设置是这样的。我有一个注册域名。通过我的域名提供商,我已将我的域名指向动态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>
如何将子域重定向到其他服务器并使其工作?
答案 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服务器上 希望有所帮助!