Могу ли я использовать файл /etc/hosts для настройки псевдонима [закрыто]
The /etc/hosts
файл может использоваться для переопределения определений dns, т. е. для указания имени хоста на другой ip.
Я хочу использовать /etc/hosts
чтобы сделать запись псевдонима, т. е. заставить мой компьютер думать, что www.mysite.com не указывает на" жестко закодированный " ip, но вместо этого является синонимом mychangingip.myip.com.
можно ли это сделать?
9 ответов:
/etc/hosts
не может быть использован (сам по себе) для создания имени хоста "псевдонимы".файл hosts создает внутренний эквивалент
A
иPTR
записи из DNS, т. е. отображение имени хоста на IP-адрес и наоборот.хотя вы можете добавить несколько имен к определенному IP, это требует, чтобы вы знали IP заранее. Он не может быть использован для получения того же эффекта, что и
CNAME
запись, где имя указывает на другое имя, которое в свою очередь разрешает необходимый IP.
Если вы хотите SSH на сервер (с динамически изменяющейся записью DNS), то вы можете эффективно добавить "псевдоним" (в файле ~/.ssh / config) создание записи:
Host myAlias HostName mychangingip.myip.com
затем вы можете "ssh myAlias" (есть и другие директивы, которые могут быть полезны, например, пользователь, порт и т. д.).
у меня была такая же точная проблема, и я решил ее, установив и используя nginx на моем mac. Для этого вам не нужен dns-сервер. Вы можете просто воспользоваться преимуществами nginx
proxy_pass
возможность получить тот же эффект, что и cname.после установки и настройки nginx, вы можете псевдоним
first.com
наsecond.com
такой. В вашем/etc / hosts forwardfirst.com
трафик на 127.0.0.1.127.0.0.1 first.com
затем в конфигурации nginx добавьте следующее:
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-адрес в файле hosts и не нравится накладные расходы на пользовательскую настройку DNS. Например, вы можете регулярно запускать его в процентах.
#!/bin/bash # Get the dynamic IP (dirty, I know) IP=`host -t a mychangingip.myip.com | perl -nle '/((?:\d+\.?){4})/ && print ' | 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
Я недавно изучал это, я не мог найти реального решения. Однако вы можете получить частично то, что хотите, добавив строку поиска в /etc/resolv.conf например:
search myip.com
тогда он будет искать mychangingip.myip.com при попытке решить mychangingip См. также справочную страницу для resolv.conf
Это можно сделать, запустив локальный DNS-преобразователь (что-то вроде 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) это будет actaully решили "localhost", так что вы не можете делать такие вещи, как это :
if (Request.Url.Authority == "dev.example.com) { // ... }
псевдоним разрешен в 'localhost'. я думаю, что это поведение работает, как если бы это было CNAME
есть поставщики услуг, которые будут комфортно и надежно делать это за вас. Ярким примером является безопасность.
Я так не думаю, hosts file на самом деле не является альтернативой dns-сервера. Вместо того, чтобы пытаться выяснить, как установить и настроить привязку DNS, Вы, возможно, захотите попробовать записанного в файл изображения SheerDNS. http://threading.2038bug.com/sheerdns/ (лучший легкий dns-сервер, который я нашел через freshmeat).