Mac-Firewall blockiert Nginx (Port 80) von außen

10

Ich habe nginx über Ports installiert und mit sudo gestartet. Der Zugriff auf die Nginx-Begrüßungsseite von localhost funktioniert einwandfrei, der Zugriff von einem externen Computer schlägt jedoch fehl.

Wenn Sie von außen eine nmap auf dem Computer erstellen, wird dies deutlich

80/tcp   filtered http

Die Mac-Firewall blockiert also eindeutig den Port. Anschließend füge ich die ausführbare Datei nginx zur Liste der Firewall-Ausnahmen hinzu. Die nmap wird jedoch weiterhin als gefilterter Port 80 angezeigt und ich kann nicht auf die Webseite zugreifen. Die genaue Binärdatei in der Liste ist / opt / local / sbin / nginx, was meines Wissens korrekt erscheint

Irgendwelche Ideen, was ich tun soll? Vielen Dank!

PS Durch Ausschalten der Firewall kann ich von außen auf die Website zugreifen. Dies ist jedoch keine ideale Lösung.

Alex Ionescu
quelle
Ich habe keine Antwort, aber hier sind einige Dinge, die Sie sich ansehen sollten: Überprüfen Sie /var/log/appfirewall.log, um festzustellen, ob es etwas Nützliches enthält, und führen Sie es aus sudo lsof -i:80, um sicherzustellen, dass es wirklich Nginx ist, das das Abhören übernimmt (und das auch) Es lauscht auf allen IPs, nicht nur auf 127.0.0.1).
Gordon Davisson
Hey Gordon, danke für die Vorschläge! Mein Firewall-Protokoll sieht folgendermaßen aus, wenn ich versuche, eine Verbindung herzustellen: 18. Dezember 02:12:56 MacBook-Pro.local socketfilterfw [80663] <Info>: Verweigern Sie die Verbindung von my.ip.is.here:55843 zu Port 80 proto = 6 Und dies ist die Ausgabe der Abhörtabelle: nginx 80437 root 6u IPv4 0x35ec104ccb86c175 0t0 TCP *: http (LISTEN) nginx 80438 niemand 6u IPv4 0x35ec104ccb86c175 0t0 TCP *: http (LISTEN) Es sieht so aus, als ob alles korrekt sein sollte, aber es wird immer noch blockiert :(
Alex Ionescu
Ist es möglich, dass Sie zwei ausführbare Nginx-Dateien haben, eine in der Firewall und eine nicht? Das ist das einzige, woran ich denken kann ...
Gordon Davisson

Antworten:

10

Das hat bei mir funktioniert (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

Beim Versuch, dies über Symlink zu tun (um zu vermeiden, dass dieser Prozess beim Upgrade von nginx wiederholt wird), wurde der folgende Fehler angezeigt: Die Anwendung ist nach dem Ausführen nicht Teil der Firewall :

sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /usr/local/bin/nginx
Eugene
quelle
Ich erhielt die gleiche Meldung "Die Anwendung ist nicht Teil der Firewall", und in meinem Fall war es ein Problem, bei dem zwischen Groß- und Kleinschreibung unterschieden wurde ... Ich schrieb Keller statt Keller. Als ich Capital C benutzte, hat es funktioniert !! Vielen Dank
Ofer Segev
3

Ich habe seit Ewigkeiten versucht, dies herauszufinden, und schließlich im Terminal Folgendes getan:

$ 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

Und es schien das Problem zu beheben.

Ich habe die Nginx-Anwendung auch in die Liste der genehmigten Anwendungen in der OS X-Firewall gezogen.

John Griffiths
quelle
Diese Schritte funktionierten für mich, aber ich musste auch neu starten, nginxdamit die Website tatsächlich geladen werden konnte.
Hippo
0

Ich bin auf dasselbe Problem gestoßen. Ich vermute, dass dies mit dem Master / Worker-Prozessmodell von nginx zu tun hat, das die Appfirewall-Implementierung von Apple verwirrt.

Die Lösung, die ich gefunden habe, besteht darin, appfirewall anzuweisen, den Nginx-Prozess zuzulassen:

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

Ich kann mich nicht erinnern, ob dies bei Neustarts weiterhin besteht oder nicht. Wenn dies nicht der Fall ist, erstellen Sie eine Startliste in / Library / LaunchAgents, um dies beim Booten zu tun, wenn Sie möchten.

Dossy
quelle
1
Dies funktioniert unter 10.8 nicht. Es wird beanstandet, dass -t eine ungültige Option ist. Wenn ich über --add `which nginx` hinzufüge, wird es hinzugefügt, aber es wird nicht erkannt, wenn ich es mit der Option --remove entferne.
Brendan
Dies funktioniert auch unter Mac OS X 10.9.3 nicht. Apple hat die -tOption entfernt.
Siu Ching Pong -Asuka Kenji-
0

ändere deinen $ PATH

lassen System das finden nginx in /usr/local/Cellar/nginx/nginx-xx/bin/nginxzunächst

März 1993
quelle
0

Ich bin auf El Capitan (10.11.6). Sie können manuell nginxüber die GUI von der Firewall ausschließen . Das hat es für mich gelöst.

Gehen Sie zunächst zu den Systemeinstellungen. Gehen Sie dann zu Sicherheit und Datenschutz und klicken Sie auf die Registerkarte Firewall.

Klicken Sie auf die Schaltfläche "Firewall-Optionen" und fügen Sie sie hier nginxals ausgeschlossene Anwendung hinzu:

Geben Sie hier die Bildbeschreibung ein

Nginx war /usr/local/Cellar/nginx/1.10.3/bin/nginxfür mich in. Ich konnte im Datei-Explorer in den Systemeinstellungen nicht dazu navigieren. Um dies zu umgehen, habe nginxich auf meinem Desktop eine Verknüpfung zu erstellt und diese ausgewählt.

dspacejs
quelle