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