我可以使用/ etc / hosts文件来configuration别名吗?

/etc/hosts文件可以用来覆盖dns的定义,即将主机名指向不同的ip。

我想使用/etc/hosts来创build一个别名logging,即让我的电脑认为www.mysite.com并不指向“硬编码”ip,而是mychangingip.myip.com的同义词。

可以这样做吗?

不能使用/etc/hosts来生成主机名“别名”。

主机文件产生来自DNS的APTRlogging的内部等价物,即主机名到IP地址的映射,反之亦然。

虽然您可以将多个名称添加到特定的IP,但需要您提前知道IP。 它不能用于产生与CNAMElogging相同的效果,其中名称指向另一个名称,然后又parsing为期望的IP。

如果你想SSH到服务器(dynamic改变DNS条目),那么你可以通过(在〜/ .ssh / config文件中)创build一个条目来有效地添加一个“别名”:

 Host myAlias HostName mychangingip.myip.com 

那么你可以“ssh myAlias”(还有其他可能有用的指令,例如用户,端口等)。

我有同样的确切的问题,我解决了它在我的Mac上安装和使用nginx。 你不需要一个DNS服务器来做到这一点。 您可以利用nginx的proxy_pass选项来获得与cname相同的效果。

一旦你有nginx安装和设置,你可以像second.com这样为second.com别名。 在你的/ etc / hosts转发first.comstream量到127.0.0.1。

 127.0.0.1 first.com 

在你的nginxconfiguration文件中添加如下内容:

 server { listen 80; server_name first.com; access_log off; location / { proxy_pass http://second.com; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-for $remote_addr; proxy_connect_timeout 300; } } 

这应该有效地给你一个类似cname的设置。 希望有所帮助!

如果您只需要在主机文件中拥有最新的IP,并且不喜欢自定义DNS设置的开销,那么这个shell脚本可能会为您带来诀窍。 例如,你可以像cronjob那样定期运行它。

 #!/bin/bash # Get the dynamic IP (dirty, I know) IP=`host -ta mychangingip.myip.com | perl -nle '/((?:\d+\.?){4})/ && print $1' | head -n1` # Update the hosts file if test -n "$IP"; then grep -v www.thesite.com /etc/hosts > /tmp/hosts echo "$IP www.thesite.com" >> /tmp/hosts cp /tmp/hosts /etc/hosts fi 

我最近看到这个,我找不到一个真正的解决scheme。 但是,通过在/etc/resolv.conf中添加一个search行,您可以部分获得所需内容,例如:

search myip.com

然后,当尝试parsingmychangingip时,它将查找mychangingip.myip.com另请参见resolv.conf的手册页

这可以通过运行本地DNSparsing器(类似于dnsmasq )来完成。 检查https://serverfault.com/questions/22419/set-dns-server-on-os-x-even-when-without-internet-connection

谨慎的一点是,如果你有这样一个条目:

  127.0.0.1 dev.example.com 

当你实际上在你的应用程序(在我的情况下是ASP.NET)中获取请求时,它将实际上已经parsing为“localhost”,所以你不能做这样的事情:

 if (Request.Url.Authority == "dev.example.com) { // ... } 

别名parsing为“本地主机”。 我认为这种行为就像是CNAME一样

有服务供应商会为您舒适可靠地为您服务。 一个突出的例子是dyndns 。

我不这么认为,主机文件不是一个真正的DNS服务器的select。 而不是试图找出如何安装和configuration绑定的DNS,你可能想尝试基于文件的SheerDNS。 http://threading.2038bug.com/sheerdns/ (最好的轻量级DNS服务器,我发现通过freshmeat)。