У меня есть рабочий веб-сервер, через который можно назвать http://localhost:9000/
. То, что я пытаюсь заархивировать, вместо вызова http://localhost:9000/
, Я хотел бы назвать http://repo.sweetsoft/. Я попытался изменить файл hosts следующим образом:
127.0.0.1 localhost
127.0.1.1 sweetsoft
127.0.0.1:9000 repo.sweetsoft
Как Вы видите, я добавил последнюю строку, но она не работает. Что я делаю неправильно?
Существует недоразумение приблизительно hosts
файл здесь.
, В первую очередь, файл hosts имеет приоритет по DNS в большинстве операционных систем, можно определить их в операционных системах Linux/Unix и macOS в /etc/hosts
и c:\windows\system32\drivers\etc\hosts
в Windows.
So, когда Вы добавляете запись в своем файле hosts как:
127.0.0.1 repo.sweetsoft
и попытка открыть http://repo.sweetsoft/ в Вашем браузере, это не отправляет запроса DNS внешнему миру и использует эту запись от Вашего файла hosts.
Имеют в виду, что это только работает на запись (разрешение, что имя или домен адресуют к адресу IPv4) и запись AAAA (разрешение, что имя или домен адресуют к адресу IPv6), и Вы не можете определить TXT или записи MX, например.
, Но номера портов находятся на другом сетевом уровне, файл hosts только понимает имена (как repo.sweetsoft) и IP-адреса, это - уровень 3 и 4 в модели ISO (Сеть/Транспорт), но номера портов находятся в уровне 7 (прикладной уровень).
Check OSI OSI по сравнению с моделью
TCP/IP С тех пор hosts
файл или протокол DNS не знают о прикладных уровнях, они понятия не имеют о номерах портов также.
Ваша конфигурация путем добавления 127.0.0.1:9000
к файлу hosts похожа на добавляющие номера портов к DNS записи.
После этого разъяснения, можно устранить эту проблему несколькими способами:
# This command will forward all requests destined to port 80 and makes a lot of conflicts, I suggest socat
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-ports 9000
apt install socat -y
socat TCP-LISTEN:80,fork TCP:127.0.0.1:9000
, Если Вы не можете изменить свой порт приложения, socat будет самым легким путем.
Для повседневного использования, можно записать systemd сервисный файл для выполнения его в фоновом режиме.
Можно пойти с другим подходом:
127.0.1.1 sweetsoft repo.sweetsoft
в /etc/hosts
repo.sweetsoft:80
и 127.0.0.1:9000
в Вашем сервере HTTP (AFAIK, Apache может сделать его с помощью VirtualHost
Ссылка ). Однако это кажется мне, Вы используете сервер разработки приложений. Используя Apache для проксирования может быть излишество.