Я уже искал, но не совсем уверен, что вопросы, которые я нашел, касаются моей проблемы.
У меня есть виртуальная машина (ubuntu 16.04.04 LTS), на которой уже установлен докер и запущен веб-сервер nginx (отлично работает) .
Не хочу настраивать второй виртуальный хост. Для этого у меня есть один файл конфигурации szenario.conf, который содержит следующие строки: 1. хост и 2. host
docker-compose.yml выглядит так: Docker compose yml
Теперь, когда я ввожу IP-адрес виртуальной машины, я должен набирать, например, 192.168.56.103:8080, который возвращает только первый веб-сайт (в данном примере - спидометр).
Ввод example.speedo и example.fakebook направляется в Интернет и не работает.
Как сделать оба сайта доступными через имя хоста, чтобы при экспорте этого компьютера другой пользователь мог легко получить доступ к этим сайтам, набрав имена при импорте машины в его среду?
Какие изменения я должен внести?
Чтобы ввести имя хоста в адресной строке браузера и подключить браузер к вашей виртуальной машине, он должен преобразовать имя хоста в IP-адрес. Для этого он сначала просматривает файл / etc / hosts
и проверяет, определено ли там имя хоста. Если да, то используется IP, указанный в файле. В противном случае выполняется обычный поиск DNS.
В зависимости от вашей среды вы не сможете изменить DNS, поэтому давайте сначала сконцентрируемся на etc / hosts
(или % SystemRoot% \ system32 \ drivers \ etc \ hosts
, если ваша ОС Windows). Это локальный файл вашего компьютера, поэтому любые изменения, которые вы в нем вносите, влияют только на ваш собственный браузер.
Чтобы иметь возможность открывать «example.speedo» и «example.fakebook» в вашем браузере и подключаться к вашему nginx, добавьте следующую строку в ваш файл hosts:
192.168.56.103 example.speedo example.fakebook
Все, что он сообщает вашему компьютеру, что имена example.speedo и example.fakebook должны быть преобразованы в 192.168.56.103.
Пожалуйста, имейте в виду, пока это работает для вас, если вы передадите свою виртуальную машину кому-то другому, он должен будет сделать такую же модификацию своего файла hosts.
Другой вариант - изменить ваш DNS. Поскольку процесс этого сильно зависит от используемого DNS-сервера, я не могу сказать, как это сделать. Вам нужно будет добавить две новые зоны, speedo и facebook, и добавить туда записи DNS. Тогда другие пользователи, использующие тот же DNS-сервер (что, вероятно, означает, что они находятся в той же сети, что и вы), могут использовать ваш компьютер без необходимости редактировать файл своих хостов.
Однако я не могу рекомендовать это, так как создание поддельных зон в локальном DNS-сервер, использующий имена, которые однажды могут стать официальными зонами (возможно, что facebook зарегистрирует TLD facebook), может привести к проблемам в будущем (в этом случае facebook может когда-нибудь перестать работать для вас).
Если вы используете домен, которым вы владеете или который может использоваться локально (например, "локальный"), вы можете без проблем добавлять имена под этим доменом. Примеры: «speedo.local» и «facebook.local» или «speedo.your.name.here» и «facebook.your.name.here».
Чтобы не указывать порт в адресной строке, у вас должен быть nginx на порту 80 вместо 8080. Установите портов
на 80:80
в docker-compose.yml
.
Вам необходимо добавить имена виртуальных хостов в / etc / hosts
на компьютере, который будет использоваться для доступа к этим хостам.
Итак, если вы запустите браузер на вашем хосте и хотите получить доступ к сайту в контейнере,вам нужно добавить следующие строки в файл / etc / hosts
на вашем хосте:
192.168.56.103 example.speedo
192.168.56.103 example.fakebook
Если ваш хост - машина Windows, вам нужно ввести эти строки в `C: \ Windows \ System32 \ Файл drivers \ etc \ hosts.
В качестве альтернативы можно добавить их в зону DNS для ваших доменов.