http://localhost:3000 работает, но http://127.0.0.1:3000 не работает

Я создаю приложение Rails на моей локальной машине разработчика. При запуске моего локального сервера я могу получить доступ http://localhost:3000 без проблем. Тем не менее, когда я пытаюсь перейти к http://127.0.0.1:3000Я получаю ERR_CONNECTION_REFUSED, Обычно меня не волнует эта проблема, но когда я пытаюсь получить доступ к туннелю, используя ngrokЯ получаю эту ошибку:

Tunnel <URL> unavailable

Unable to initiate connection to 127.0.0.1:3000. A web server must be running on port 127.0.0.1:3000 to complete the tunnel.

Я сделал чистую установку OS X этим утром, и единственное, что работает в моей системе, - это то, что находится в моем файле readme для dotfiles. Вот мой полный /etc/hosts файл:

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1   localhost
255.255.255.255 broadcasthost
::1             localhost 

2 ответа

Решение

В вашем файле hosts у вас есть разрешение как IPv4, так и IPv6. Большинство операционных систем сегодня предпочитают IPv6, если доступно. Так как localhost работает, а 127.0.0.1 - нет, это может быть вашей проблемой.

В этом случае я бы проверил две вещи:

  1. Проверьте, работает ли сервер / служба только на IPv6. Если это так, измените его так, чтобы он работал как на IPv4, так и на IPv6.
  2. Проверьте правила брандмауэра, чтобы убедиться, что они разрешают доступ к localhost на этом порту как для IPv4, так и для IPv6.

TLDL; убедитесь сsudo lsof -i tcp:<port>что на том же порту не работает другой процесс.(sudo if necessary) kill -9это если есть.


У меня только что возникла эта проблема, и другой ответ не слишком помог мне. У меня был обратный прокси-сервер nginx, а также внешние и внутренние серверы, работающие в контейнерах докеров.

Был еще один процесс, запущенный на том же порту пользователем, который по какой-то причине не испортил Docker Compose из привязки порта. Когда я нажимал на адресную строку, она правильно направлялась наnginxработает из моих контейнеров. Когда я пошёл на это не хотел.

Я заметил эту проблему, когда даже после закрытия nginx в моей домашней установке и в моем контейнере докеров, на котором работал nginx, я все еще получал 502 Bad Gateway от nginx как в Chrome, так и в FireFox.

Проверив 8082 (С SUDO) , я увидел этоrootбыл процесс, работающий на том же порту. После завершения этого процесса я смог снова подключиться к своим службам докеров вместе с .

Я предполагаю, что на самом деле это был переход к этому процессу (143 ниже), а не к моему докер-контейнеру, поэтому на самом деле я запускал два разных процесса веб-сервера с помощью127.0.0.1иlocalhost. Очень странно! Если кто-то умнее меня знает, как это вообще возможно, прокомментируйте :)! Вероятно, это связано с ответом выше.

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