Я пытаюсь создать псевдоним для своего локального веб-сайта, на котором работает vagrant (виртуальная коробка), поэтому я хочу перенаправить любые запросы с site.ru на 192.168.10.10/site.ru через файл /etc/hosts
. В файле hosts у меня есть следующее:
...
192.168.10.10/site.ru site.ru
Однако это не работает так, как я хочу. Когда я захожу на site.ru, я появляюсь на «реальном» сайте. Я надеюсь, что кто-нибудь поймет меня, чтобы ответить на мой вопрос.
Что я сделал не так?
ОБНОВЛЕНИЕ: Решение: Как настроить массовые динамические виртуальные хосты в nginx?
Определенно вы можете направить имя хоста на IP-адрес в вашей локальной сети с помощью файла hosts
Ubuntu, но он не поддерживает конкретный синтаксис, который вы используете. Из man hosts
:
Этот файл представляет собой простой текстовый файл, который связывает IP-адреса с именами хостов, по одной строке на IP-адрес. Для каждого хоста должна присутствовать одна строка со следующей информацией:
IP_address canonical_hostname [aliases...]
Файл hosts в Ubuntu не направляет имена хостов с другими именами хостов , но только с IP-адресами .
Поэтому вместо того, чтобы писать:
192.168.10.10/site.ru site.ru
Вместо этого вы должны написать:
192.168.10.10 site.ru
Это приведет к тому, что site.ru
будет преобразовано в 192.168.10.10
вместо того, что бы это было в противном случае разрешается через DNS.
Однако , это может или не может эффективно направлять весь трафик, который (концептуально) связан с доменным именем site.ru
. В частности, обычно будет недостаточно, чтобы домен, подобный www.site.ru
, был также отображен на 192.168.10.10. Для этого добавьте www.site.ru
в явном виде:
192.168.10.10 site.ru www.site.ru
(Если хотите, вы можете сделать для него отдельную строку. Эта строка также должна начинаться с IP-адреса.)
hosts
не будет направлять трафик в определенную папку на сайте. Если под 192.168.10.10/site.ru
вы подразумеваете каталог site.ru
на веб-сервере по адресу 192.168.10.10
(то есть, если вы используете /
в качестве разделителя пути ), вы не можете использовать файл hosts
для этого. Файлы hosts
не способствуют такому поведению в любой операционной системе; это принципиально не связано с тем, что делают hosts
файлы.
Причина, по которой это не может работать, заключается в том, что файлы хостов перенаправляют имена хостов на IP-адреса. Но 192.168.10.10/site.ru
это не IP-адрес. Это IP-адрес, за которым следует информация для поиска в каталоге, отправленная на IP-адрес по протоколу прикладного уровня . См. эту статью о значении различных частей URL (и о том, как разрешается только одна часть через IP).
Надлежащим решением в подобной ситуации является настройка веб-сервера для обслуживания различного контента в зависимости от того, какое имя хоста используется для доступа к сайту. Это может работать, потому что протокол HTTP включает в себя способность веб-браузеров сообщать веб-серверу, какое имя хоста он использует (и, по сути, все веб-браузеры отправляют эту информацию всякий раз, когда это применимо).
Если у вас есть возможность вносить изменения в веб-сервер и вам нужна помощь в настройке «виртуальных хостов» , а веб-сервер представляет собой систему Ubuntu, пожалуйста, не стесняйтесь написать отдельный вопрос об этом здесь.
Если у вас нет возможности вносить изменения в веб-сервер, вам следует поговорить с кем бы то ни было.
Если даже , что абсолютно не вариант, то вам следует отредактировать свой вопрос (или опубликовать новый, по вашему выбору), чтобы прояснить ситуацию подробно. Возможен более сложный обходной путь, который соответствует вашим потребностям . Вероятно, это будет связано с прокси-сервером HTTP , работающим на каждом компьютере клиента и перенаправляющим трафик HTTP по URL.
Это правильный синтаксис IP ADDRESS SITE.COM
реальный пример 127.0.0.134 hackme.org