Назад | Перейти на главную страницу

Порт 80: в соединении отказано. Как исправить на Mac OSX?

Я заметил некоторые проблемы с виртуальными хостами Apache на двух Mac, которые в остальном имеют одинаковую настройку (с точки зрения httpd.conf, vhosts, hosts и т. Д.). На одном Mac виртуальные хосты обслуживаются без сбоев, на другом , Я получаю отказ в соединении с портом 80.

Думаю, это не проблема с конфигурацией Apache, а как-то связано с портами.

А именно, машина, которая не обслуживает виртуальный хост test.dev на 80, показывает мне это при сканировании портов:

Сканирование портов выполняется…

Port Scanning host: 127.0.0.1

     Open TCP Port:     88          kerberos
     Open TCP Port:     445         microsoft-ds
     Open TCP Port:     548         afpovertcp
     Open TCP Port:     631         ipp
Сканирование портов завершено…

Машина, которая обслуживает test.dev, показывает это:

Port Scanning host: 127.0.0.1

     Open TCP Port:     22          ssh
     Open TCP Port:     53          domain
     Open TCP Port:     80          http
     Open TCP Port:     88          kerberos
     Open TCP Port:     445         microsoft-ds
     Open TCP Port:     548         afpovertcp
     Open TCP Port:     631         ipp
Сканирование портов завершено…

Итак, на «хорошей» машине порт 80 указан, а на «плохой» - нет.

На обеих машинах у меня есть apache, который прослушивает *: 80 и т. Д., Правильно настроил vhosts, соответствующую запись в файле hosts и т. Д. Оба Mac работают под управлением El Capitan, находятся в одной сети и т. Д.

И хотя на хорошем Mac обслуживается test.dev, на плохом Mac я получаю следующее:

↪ curl -I -L test.dev                                                                                                                                                               15:51:01
curl: (7) Failed to connect to test.dev port 80: Connection refused

Я немного растерялся, потому что не знаю, как это исправить. Почему порт 80 не отображается при сканировании портов плохого Mac (с помощью приложения Network Utility), но пока sudo lsof -i -P | grep -i "80"дает мне:

httpd     4482           root    5u  IPv6 0xfe89d5ee2c7da24b      0t0  TCP *:80 (LISTEN)
httpd     4484         daemon    5u  IPv6 0xfe89d5ee2c7da24b      0t0  TCP *:80 (LISTEN)
httpd     4485         daemon    5u  IPv6 0xfe89d5ee2c7da24b      0t0  TCP *:80 (LISTEN)
httpd     4486         daemon    5u  IPv6 0xfe89d5ee2c7da24b      0t0  TCP *:80 (LISTEN)
httpd     4487         daemon    5u  IPv6 0xfe89d5ee2c7da24b      0t0  TCP *:80 (LISTEN)
httpd     4488         daemon    5u  IPv6 0xfe89d5ee2c7da24b      0t0  TCP *:80 (LISTEN)

Спасибо заранее.

Всего наилучшего, Линь

Изменить: меня попросили обосновать, почему это не дублирующий вопрос к более общему вопросу об отказе в соединении. Это не потому, что мой вопрос был специфичен для Mac OSX, и решение, которое сработало для меня (см. Ниже), требовало редактирования pf.conf и использования pfctl, который вообще не упоминается в предполагаемом повторяющемся вопросе.

Чтобы убедиться, что порт 80 открыт для TCP на всех интерфейсах, я добавил

pass in proto tcp from any to any port 80

к /etc/pf.conf. Перезагрузка pfctl не совсем помогла, но перезагрузка сделала. Теперь порт отображается как открытый при сканировании портов, и мои виртуальные хосты обслуживаются должным образом.