Zapora Mac blokuje nginx (port 80) od strony zewnętrznej

10

Zainstalowałem nginx przy użyciu portów i uruchomiłem go z sudo. Dostęp do strony powitalnej nginx z localhost działa idealnie, jednak dostęp do niej z komputera zewnętrznego nie powiedzie się.

Wykonywanie nmap na komputerze z zewnątrz ujawnia

80/tcp   filtered http

Tak wyraźnie zapora Mac blokuje port. Następnie przystępuję do dodania pliku wykonywalnego nginx do listy wyjątków zapory, jednak nmap nadal pokazuje się jako filtrujący port 80 i nie mogę uzyskać dostępu do strony internetowej. Dokładny plik binarny znajdujący się na liście to / opt / local / sbin / nginx, który według mojej wiedzy wydaje się poprawny

Jakieś pomysły, co powinienem zrobić? Dzięki!

PS Wyłączenie zapory ogniowej pozwala mi uzyskać dostęp do strony internetowej z zewnątrz, jednak nie jest to idealne rozwiązanie.

Alex Ionescu
źródło
Nie mam odpowiedzi, ale oto kilka rzeczy, na które warto spojrzeć: sprawdź /var/log/appfirewall.log, aby zobaczyć, czy ma coś przydatnego, i biegnij, sudo lsof -i:80aby upewnić się, że to naprawdę Nginx słucha (i to nasłuchuje na wszystkich adresach IP, nie tylko 127.0.0.1).
Gordon Davisson
Hej Gordon, dzięki za sugestie! Mój dziennik zapory wygląda tak, gdy próbuję się połączyć: 18 grudnia 02:12:56 MacBook-Pro.lokalny socketfilterfw [80663] <Info>: Odmów połączenia z my.ip.is.here:55843 do portu 80 proto = 6 I to jest wynik tabeli nasłuchiwania: nginx 80437 root 6u IPv4 0x35ec104ccb86c175 0t0 TCP *: http (LISTEN) nginx 80438 nikt 6u IPv4 0x35ec104ccb86c175 0t0 TCP *: http (LISTEN) Wygląda na to, że wszystko powinno być poprawne, ale nadal jest blokowane :(
Alex Ionescu,
Czy to możliwe, że masz dwa pliki wykonywalne nginx, jeden dozwolony w zaporze ogniowej, a drugi nie? To jedyna rzecz, o której mogę myśleć ...
Gordon Davisson,

Odpowiedzi:

10

To zadziałało dla mnie (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

Podczas próby zrobienia tego za pomocą dowiązania symbolicznego (aby uniknąć ponownego wykonania tego procesu po uaktualnieniu nginx), wystąpił następujący błąd: Aplikacja nie jest częścią zapory po uruchomieniu:

sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /usr/local/bin/nginx
Eugene
źródło
Otrzymałem ten sam komunikat „Aplikacja nie jest częścią zapory ogniowej”, aw moim przypadku była to sprawa rozróżniania wielkości liter ... Napisałem piwnicę zamiast piwnicy. kiedy użyłem Capital C, zadziałało !! Dzięki
Ofer Segev
3

Próbowałem to rozgryźć od wieków, ostatecznie wykonując następujące czynności w terminalu:

$ 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

I wydawało się, że to rozwiązało problem.

Przeciągnąłem również aplikację nginx na listę zatwierdzonych aplikacji w zaporze OS X.

John Griffiths
źródło
Te kroki działały dla mnie, ale musiałem zrestartować, nginxaby strona faktycznie zaczęła się ładować.
Hippo
0

Natrafiłem na ten sam problem. Podejrzewam, że ma to związek z modelem procesu nadrzędnego / roboczego nginx mylącym implementację zapory ogniowej Apple.

Rozwiązaniem, które znalazłem, jest powiedzenie appfirewall, aby zezwoliło na proces nginx:

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

Nie pamiętam, czy to się utrzymuje po ponownym uruchomieniu komputera, czy nie. Jeśli tak się nie stanie, utwórz listę uruchamiania w / Library / LaunchAgents, aby to zrobić podczas rozruchu, jeśli chcesz.

dossy
źródło
1
To nie działa na 10.8. Narzeka, że ​​-t jest nieprawidłową opcją. Co więcej, jeśli dodam przez --add `który nginx`, doda go, ale nie rozpozna, jeśli pójdę go usunąć z opcją --remove.
Brendan
To również nie działa w systemie Mac OS X 10.9.3. Apple usunęło tę -topcję.
Siu Ching Pong -Asuka Kenji-
0

zmień swoją $ PATH

niech System znaleźć nginx w /usr/local/Cellar/nginx/nginx-xx/bin/nginxpierwszej kolejności

marzec1993
źródło
0

Jestem na El Capitan (10.11.6). Możesz ręcznie wykluczyć nginxz zapory za pomocą GUI. To rozwiązało dla mnie.

Najpierw przejdź do Preferencji systemowych. Następnie przejdź do Bezpieczeństwo i prywatność i kliknij kartę Zapora.

Kliknij przycisk „Opcje zapory” i dodaj tutaj nginxjako wykluczoną aplikację:

wprowadź opis zdjęcia tutaj

Nginx został /usr/local/Cellar/nginx/1.10.3/bin/nginxdla mnie zlokalizowany . Nie mogłem przejść do tego w eksploratorze plików w Preferencjach systemowych, więc aby to obejść, zrobiłem skrót do nginxpulpitu i wybrałem to.

dspacejs
źródło