我目前的设置是这样的。我有一个注册域名。通过我的域提供商,我已将我的域指向一个动态 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
我希望这个新主机上的 apache 服务器托管 mysite.com 并将对 cloud.mysite.com 的请求转发到另一台服务器 192.168.121.50 并重定向到 https/ssl/端口 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>
如何将子域重定向到不同的服务器并使其正常工作?
最佳答案
你对虚拟主机的理解有误。 vhosts 的目的是在单个网络服务器上托管多个站点。使用您的方法并非不可能做到这一点,但如果您有多个网络服务器和服务要发布到一个域中的 www,您将以另一种方式组织。
您可以通过 DNS、网关、反向代理、路由和其他方法来做到这一点。
我建议找到一种方法,让 ddwrt 路由器组织请求并将它们交给所需的网络服务器。
在 ddwrt 上,就像反向代理和负载均衡器的示例一样,您可以使用 Pound 执行此操作:http://www.dd-wrt.com/wiki/index.php/Pound
如果您还有其他问题,请告诉我。然后我会编辑我的帖子。但从这一点来看,这是一个针对 serverfault 而不是 stackoverflow 的问题。
关于Apache:子域、虚拟主机和动态 DNS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27662811/