Брандмауер 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.herewhere5843 до порту 80 прото = 6 І це вихід таблиці прослуховування: nginx 80437 root 6u IPv4 0x35ec104ccb86c175 0t0 TCP *: http (LISTEN) nginx 80438 none 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 `який nginx`, він додає його, але він не розпізнає його, якщо я перейду видалити його за допомогою параметра --remove.
Брендан

Це не працює і на Mac OS X 10.9.3. Apple вилучила цю -tопцію.
Siu Ching Pong -Asuka Kenji-


0

Я на Ель-Капітан (10.11.6). Ви можете виключити вручну nginxз брандмауера за допомогою GUI. Це вирішило це для мене.

Спочатку перейдіть до системних налаштувань. Потім перейдіть у розділ Безпека та конфіденційність та натисніть вкладку Брандмауер.

Натисніть кнопку "Параметри брандмауера" та додайте nginxсюди як виключену програму:

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

Nginx був /usr/local/Cellar/nginx/1.10.3/bin/nginxдля мене. Я не міг перейти до цього в провіднику файлів у System Preferences, тому для обходу я зробив ярлик nginxна своєму робочому столі та вибрав це.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.