- Файл
hosts
предназначен только для разрешения имен хостов.
- Браузер при отсутствии прямого указания порта: то есть
<hostname>:<port>
, по умолчанию используется порт 80
Типичный сценарий проблемы
- приложения обычно устанавливают на своих серверах один и тот же IP-адрес по умолчанию
127.0.0.1
или localhost
(определенный в файле hosts).
чтобы избежать коллизий между, возможно, другими существующими / работающими серверами, приложение, как правило, позволяет изменить порт, но не IP-адрес.
2а. Если бы вы могли изменить IP-адрес сервера на другой в зарезервированном адресном пространстве 127.0.0.0/8
закольцованного адреса , вы, вероятно, не пытались бы устанавливать порты в файле hosts.
Возможное решение
Вы можете обойти это, используя сетевой инструмент Windows, включенный netsh
в качестве прокси-сервера порта.
обзор
example.app
| <--browser defaults to port 80
+--> example.app:80
| <--Hostname resolution by Hosts File
+--> 127.65.43.21:80
| <--Link by netsh Utility
+--> 127.0.0.1:8081
действия
- Запустите свой сервер на
localhost:8081
- Добавьте "локальный DNS" в файл hosts в качестве новой строки
127.65.43.21 example.app
- Можно использовать любой свободный адрес в сети
127.0.0.0/8
.
- Примечание. Я предполагаю, что
127.65.43.21:80
не занят другой службой.
- Вы можете проверить с помощью
netstat -a -n -p TCP | grep "LISTENING"
- добавьте следующую конфигурацию сети с помощью утилиты команды netsh
netsh interface portproxy add v4tov4 listenport=80 listenaddress=127.65.43.21 connectport=8081 connectaddress=127.0.0.1
- Доступ к серверу по адресу
http://example.app
Заметки:
- Эти команды / изменения файла должны выполняться с правами администратора.
- netsh portproxy нужны библиотеки ipv6 даже для использования v4tov4, обычно они также будут включены по умолчанию, в противном случае установите их с помощью следующей команды: netsh interface ipv6 install
Вы можете увидеть запись, которую вы добавили с помощью команды:
netsh interface portproxy show v4tov4
Вы можете удалить запись с помощью следующей команды:
netsh interface portproxy delete v4tov4 listenport=80 listenaddress=127.65.43.21
Ссылки на ресурсы:
Примечание: этот ответ является дублированием моего ответа, который обсуждался в этом аналогичном вопросе / ответе по stackoverflow.