通过修改/etc/hosts ( 如何执行这里操作),在远程服务器上提供子站点路由?

分享于 

3分钟阅读

电脑

  繁體 雙語

问题:

我正在使用一个复杂且文档化的软件 ( sfDomainRoutePlugin ),为我的网站提供子域功能。 在服务器上使用Apache作为web服务器,在服务器上运行一个无头的Ubuntu 10.0.4.

经过反复的尝试,我发现我能得到的子域名链接的唯一方法是找不到( 没有得到'服务器,而是把域名名称硬编码到我的文件中。

当我在localhost上测试时,我想将解决方案部署到运行多个虚拟服务器( 不同网站)的远程服务器。 远程服务器根本不使用/etc/hosts 文件,因为每个网站都有惟一的NAME。

My: 我可以简单地在 etc/hosts文件中输入硬编码的域条目( 以及 static IP地址)? 还是有别的方法来做这个?

建议的方法是修改远程服务器上的/etc/hosts 文件,如下所示:


123.456.789.123 foo.example.com


123.456.789.123 foo1.example.com


123.456.789.123 foo2-bar.example.com



其中 123.456.789.123 是远程服务器的static IP。

是这样做的?

我特别希望greatful能够从一个生产环境中使用来获得类似的目标。


回答 1:

如果所有子域都必须由一个物理站点提供,则为 ,你有:

  • 在dns区域 smth.like 中写入

    www在 ip地址。

    somename中的somename另一个ip地址/if it需要/

    • 在 CNAME

最后的记录将给你英镑和任何未定义的,以www的名字作为回答

  • 在托管 控制面板 中,将 *.domainname 定义为www站点的别名

我可以简单地在 etc/hosts文件中输入硬编码的域条目( 以及 static IP地址)?

不用主机,你将能够将请求路由到正确的服务器,但不知道子站点映射( 这些站点不存在)。


回答 2:

由于所有域/子域都使用相同的IP地址,所以我们不需要担心任何反向代理。 请参见下面的示例。 这些适用于不同的域,但对于子域同样适用。 你不需要编辑主机文件。


# Ensure that Apache listens on port 80


Listen 80



# Listen for virtual host requests on all IP addresses


NameVirtualHost *:80



<VirtualHost *:80>


DocumentRoot/www/example1


ServerName www.example1.com



# Other directives here



</VirtualHost>



<VirtualHost *:80>


DocumentRoot/www/example2


ServerName www.example2.org



# Other directives here



</VirtualHost> 



同时,ping你的每个子域。 如果不返回 static ip地址,那么你就知道它是一个 dns/记录问题。 你可能需要再次查看域注册的设置,或者等待 DNS ( 通常 15分钟到一个小时) 启动。



相关文章