10

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

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

80/tcp   filtered http

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

Есть идеи, что мне делать? Спасибо!

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

5 ответов5

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
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.

0

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

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

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

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

0

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

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

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

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

0

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

пусть система сначала найдет nginx в /usr/local/Cellar/nginx/nginx-xx/bin/nginx

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .