Брандмауэр Mac блокирует nginx (порт 80) с внешней стороны


10

Я установил nginx с помощью портов и запустил его с помощью sudo. Доступ к странице приветствия nginx из localhost работает отлично, однако получить доступ к нему с внешнего компьютера не удается.

Выполнение Nmap на компьютере снаружи показывает,

80/tcp   filtered http

Очевидно, что брандмауэр Mac блокирует порт. Затем я продолжаю добавлять исполняемый файл nginx в список исключений брандмауэра, однако nmap по-прежнему отображается как фильтруемый порт 80, и я не могу получить доступ к веб-странице. Точный двоичный файл, который находится в списке, является / opt / local / sbin / nginx, который, насколько мне известно, кажется правильным

Есть идеи, что мне делать? Благодаря!

PS Отключение брандмауэра позволяет мне получить доступ к веб-сайту из внешнего мира, однако это не идеальное решение.


У меня нет ответа, но вот несколько вещей, на которые стоит посмотреть: проверьте /var/log/appfirewall.log, чтобы увидеть, есть ли в нем что-нибудь полезное, и запустите, sudo lsof -i:80чтобы убедиться, что это действительно nginx, выполняющий прослушивание (и это он прослушивает все IP-адреса, а не только 127.0.0.1).
Гордон Дэвиссон

Привет, Гордон, спасибо за предложения! Мой журнал брандмауэра выглядит так, когда я пытаюсь подключиться: 18 декабря, 02:12:56 MacBook-Pro.local socketfilterfw [80663] <Info>: запретить подключение с my.ip.is.here:55843 к порту 80 proto = 6 И это вывод таблицы прослушивания: nginx 80437 root 6u IPv4 0x35ec104ccb86c175 0t0 TCP *: http (LISTEN) nginx 80438 nobody 6u IPv4 0x35ec104ccb86c175 0t0 TCP *: http (LISTEN) Похоже, все должно быть правильно, но все равно блокируется :(
Алекс Ионеску

Возможно, у вас есть два исполняемых файла nginx, один разрешен в брандмауэре, а другой нет? Это единственное, о чем я могу думать ...
Гордон Дэвиссон

Ответы:


10

Это сработало для меня (OSX 10.9):

sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /usr/local/Cellar/nginx/1.4.4/bin/nginx
sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /usr/local/Cellar/nginx/1.4.4/bin/nginx

При попытке сделать это через symlink (чтобы избежать повторения этого процесса при обновлении nginx), получилась следующая ошибка: Приложение не является частью брандмауэра после запуска:

sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /usr/local/bin/nginx

Я получил то же сообщение «Приложение не является частью брандмауэра», и в моем случае это была проблема, чувствительная к регистру ... я написал подвал, а не подвал. когда я использовал Capital C, это работало !! Спасибо
Офер Сегев

3

Попытки выяснить это целую вечность, в конечном итоге сделать в терминале следующее:

$ sudo /usr/libexec/ApplicationFirewall/socketfilterfw --remove /usr/local/Cellar/nginx/1.10.0/bin/nginx
Application at path ( /usr/local/Cellar/nginx/1.10.0/bin/nginx ) removed from firewall

$ sudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /usr/local/Cellar/nginx/1.10.0/bin/nginx
The application is already a part of the firewall

$ sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /usr/local/Cellar/nginx/1.10.0/bin/nginx
Incoming connection to the application is permitted

И это, казалось, решило проблему.

Я также перетащил приложение nginx в список утвержденных приложений на брандмауэре OS X.


Эти шаги работали для меня, но мне также пришлось перезапустить nginxсайт, чтобы фактически начать загрузку.
Бегемот

0

Я столкнулся с этой же проблемой. Я подозреваю, что это связано с моделью основного / рабочего процесса nginx, которая вводит в заблуждение реализацию appfirewall от Apple.

Решение, которое я нашел, - сказать appfirewall разрешить процессу nginx:

$ sudo /usr/libexec/ApplicationFirewall/socketfilterfw -t nginx

Я не помню, сохраняется ли это после перезагрузок или нет. Если это не так, создайте список запуска в / Library / LaunchAgents, чтобы сделать это при загрузке, если хотите.


1
Это не работает на 10.8. Он жалуется, что -t является недопустимым параметром. Более того, если я добавлю через --add `which nginx`, он добавит его, но не узнает, если я удалю его с опцией --remove.
Брендан,

Это не работает на Mac OS X 10.9.3. Apple удалила эту -tопцию.
Сиу Чинг-Понг -Асука Кэндзи -

0

измените свой $ PATH

пусть система поиска Nginx в /usr/local/Cellar/nginx/nginx-xx/bin/nginxпервую очередь


0

Я на Эль Капитане (10.11.6). Вы можете вручную исключить nginxиз брандмауэра, используя графический интерфейс. Это решило это для меня.

Сначала зайдите в Системные настройки. Затем перейдите в раздел «Безопасность и конфиденциальность» и перейдите на вкладку «Брандмауэр».

Нажмите кнопку «Параметры брандмауэра» и добавьте nginxв список исключенных приложений:

введите описание изображения здесь

Nginx был /usr/local/Cellar/nginx/1.10.3/bin/nginxдля меня. Я не мог перейти к этому в проводнике файлов в Системных настройках, поэтому, чтобы обойти это, я сделал ярлык nginxна рабочем столе и выбрал его.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.