файл hosts и неясное поведение. Как сделать настоящий псевдоним?

Я пытаюсь создать псевдоним для своего локального веб-сайта, на котором работает vagrant (виртуальная коробка), поэтому я хочу перенаправить любые запросы с site.ru на 192.168.10.10/site.ru через файл /etc/hosts. В файле hosts у меня есть следующее:

...
192.168.10.10/site.ru    site.ru

Однако это не работает так, как я хочу. Когда я захожу на site.ru, я появляюсь на «реальном» сайте. Я надеюсь, что кто-нибудь поймет меня, чтобы ответить на мой вопрос.

Что я сделал не так?

ОБНОВЛЕНИЕ: Решение: Как настроить массовые динамические виртуальные хосты в nginx?

2
задан 23 May 2017 в 15:39

2 ответа

Определенно вы можете направить имя хоста на 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.

0
ответ дан 23 May 2017 в 15:39

Это правильный синтаксис IP ADDRESS SITE.COM реальный пример 127.0.0.134 hackme.org

0
ответ дан 23 May 2017 в 15:39

Другие вопросы по тегам:

Похожие вопросы: