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

порт localhost 8080 не отвечает, но использование 127.0.0.1:8080 действительно работает

Когда я пытаюсь получить доступ к locahost: 8080, я получаю

The localhost page isn’t working

localhost didn’t send any data.
ERR_EMPTY_RESPONSE

но если я попробую:

127.0.0.1:8080, я получаю ответ, который ищу

Я считаю, что это как-то связано с httpd (apache), который я только что обновил с помощью homebrew httpd24 (httpd.2.4)?

Я выполнил инструкции по обновлению с этого сайта: https://getgrav.org/blog/macos-sierra-apache-multiple-php-versions

После установки httpd24 с brew у вас есть две совершенно разные среды веб-сервера Apache:

  1. пивоваренный httpd24
  2. оригинальный macOS / OS X httpd

Оба имеют разные файлы конфигурации и двоичные файлы apachectl (и другие). Первый установлен в / usr / local / Cellar / httpd24, а его двоичные файлы связаны с / usr / local / bin. Бинарные файлы macOS, связанные с httpd, находятся в / usr / sbin.

В зависимости от вашей переменной PATH (введите echo $PATH чтобы получить это) sudo apachectl [cmd] либо управляет первой, либо второй средой Apache.

После установки brew ПУТЬ по умолчанию должен быть /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin который поддерживает httpd24. Однако вы можете управлять Apache в macOS, используя полный путь (/ usr / sbin / apachectl).

Если у вас есть другой путь, который не поддерживает / usr / local / bin по сравнению с / usr / sbin, это наоборот. Чтобы получить путь избранных apachectl вы также можете просто ввести which apachectl.

Проверить это с /usr/local/bin/apachectl -S который должен дать:

VirtualHost configuration:
ServerRoot: "/usr/local/opt/httpd24"
Main DocumentRoot: "/usr/local/var/www/htdocs"
Main ErrorLog: "/usr/local/var/log/apache2/error_log"
Mutex default: dir="/usr/local/var/run/apache2/" mechanism=default 
Mutex mpm-accept: using_defaults
PidFile: "/usr/local/var/run/apache2/httpd.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="daemon" id=1 not_used
Group: name="daemon" id=1 not_used

и /usr/sbin/apachectl -S

VirtualHost configuration:
ServerRoot: "/usr"
Main DocumentRoot: "/Library/WebServer/Documents"
Main ErrorLog: "/private/var/log/apache2/error_log"
Mutex default: dir="/private/var/run/" mechanism=default 
Mutex mpm-accept: using_defaults
Mutex proxy-balancer-shm: using_defaults
Mutex proxy: using_defaults
PidFile: "/private/var/run/httpd.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="_www" id=70 not_used
Group: name="_www" id=70 not_used

Есть нет взаимно используемые файлы / папки.

Они также используют разные стандартные файлы конфигурации:

/usr/local/bin/apachectl -t -D DUMP_INCLUDES
Included configuration files:
  (*) /usr/local/etc/apache2/2.4/httpd.conf

Однако команда не работает должным образом для исходного (macOS) apachectl и дает только следующее: Синтаксис ОК.


Если вы запускаете оба httpds (настраивая разные порты здесь: 80: macOS; 8080 httpd24 - отметьте это в соответствующих файлах конфигурации) ps -aef | grep httpd | grep -v grep покажет следующее:

  0    76     1   0  4:54pm ??         0:00.13 /usr/local/opt/httpd24/bin/httpd -D FOREGROUND
  1   219    76   0  4:54pm ??         0:00.00 /usr/local/opt/httpd24/bin/httpd -D FOREGROUND
  1   220    76   0  4:54pm ??         0:00.00 /usr/local/opt/httpd24/bin/httpd -D FOREGROUND
  1   221    76   0  4:54pm ??         0:00.00 /usr/local/opt/httpd24/bin/httpd -D FOREGROUND
  1   222    76   0  4:54pm ??         0:00.00 /usr/local/opt/httpd24/bin/httpd -D FOREGROUND
  1   223    76   0  4:54pm ??         0:00.00 /usr/local/opt/httpd24/bin/httpd -D FOREGROUND
  1  4239    76   0  5:06pm ??         0:00.00 /usr/local/opt/httpd24/bin/httpd -D FOREGROUND
  0  8251     1   0  5:45pm ??         0:00.08 /usr/sbin/httpd -D FOREGROUND
 70  8261  8251   0  5:46pm ??         0:00.00 /usr/sbin/httpd -D FOREGROUND

Первые семь pid принадлежат httpd24, последние два - httpd macOS - проверьте указанные двоичные пути! и nmap localhost:

Starting Nmap 7.31 ( https://nmap.org ) at 2016-12-22 18:00 CET
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00039s latency).
Other addresses for localhost (not scanned): ::1 fe80::1
Not shown: 499 closed ports, 498 filtered ports
PORT     STATE SERVICE
80/tcp   open  http
8080/tcp open  http-proxy

В твоем личное сообщение чата вы можете ясно видеть, что httpd24 не работает вообще, но httpd macOS является.

Чтобы отключить httpd macOS, просто запустите sudo /usr/sbin/apachectl stop и дополнительно sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist (просто чтобы убедиться).

Затем сбросьте brew service start ... путем остановки службы и установки реального демона plist, как рекомендовано в связанном руководстве.

sudo cp -v /usr/local/Cellar/httpd24/2.4.23_2/homebrew.mxcl.httpd24.plist /Library/LaunchDaemons
sudo chown -v root:wheel /Library/LaunchDaemons/homebrew.mxcl.httpd24.plist
sudo chmod -v 644 /Library/LaunchDaemons/homebrew.mxcl.httpd24.plist
sudo launchctl load /Library/LaunchDaemons/homebrew.mxcl.httpd24.plist

Перезагрузка. Если вы все еще получаете ошибку при подключении с localhost: 8080 к локальному сайту разработчика, закомментируйте fe80::1%lo0 localhost в / etc / hosts. В моей среде это работает с участием хотя эта строка.


После дальнейших расследований выясняется, что виновником является неправильно настроенный веб-прокси (входящий в состав ESET Internet Security / Antivirus). Добавив правильный localhost исключить должно быть возможно решить проблему.