Firewall Mac che blocca nginx (porta 80) da un lato esterno


10

Ho installato nginx usando le porte e l'ho avviato con sudo. L'accesso alla pagina di benvenuto di nginx da localhost funziona perfettamente, tuttavia l'accesso ad esso da un computer esterno non riesce.

Fare una nmap sul computer dall'esterno rivela

80/tcp   filtered http

Quindi chiaramente il firewall Mac sta bloccando la porta. Procedo quindi ad aggiungere il file eseguibile nginx all'elenco delle eccezioni del firewall, tuttavia la nmap viene comunque visualizzata come porta 80 filtrata e non riesco ad accedere alla pagina Web. Il binario esatto che è nella lista è / opt / local / sbin / nginx che a mia conoscenza sembra corretto

Qualche idea su cosa dovrei fare? Grazie!

PS La disattivazione del firewall mi consente di accedere al sito Web dall'esterno, tuttavia non è una soluzione ideale.


Non ho una risposta, ma qui ci sono un paio di cose da guardare: controlla /var/log/appfirewall.log per vedere se ha qualcosa di utile, e corri sudo lsof -i:80per assicurarti che sia davvero nginx a fare l'ascolto (e che è in ascolto su tutti gli IP, non solo su 127.0.0.1).
Gordon Davisson,

Ehi Gordon, grazie per i suggerimenti! Il registro del firewall appare così quando provo a connettermi: 18 dic 02:12:56 MacBook-Pro.local socketfilterfw [80663] <Info>: Nega la connessione da my.ip.is.here:55843 alla porta 80 proto = 6 E questo è l'output della tabella di ascolto: nginx 80437 root 6u IPv4 0x35ec104ccb86c175 0t0 TCP *: http (LISTEN) nginx 80438 nessuno 6u IPv4 0x35ec104ccb86c175 0t0 TCP *: http (LISTEN) Sembra che tutto debba essere corretto, ma è ancora bloccato :(
Alex Ionescu il

È possibile che tu abbia due eseguibili nginx, uno consentito nel firewall e uno no? Questa è l'unica cosa che mi viene in mente ...
Gordon Davisson il

Risposte:


10

Questo ha funzionato per me (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

Quando ho provato a farlo tramite symlink (per evitare di ripetere questo processo quando nginx viene aggiornato), viene visualizzato il seguente errore: L'applicazione non fa parte del firewall dopo l'esecuzione:

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

Ho ricevuto lo stesso messaggio "L'applicazione non fa parte del firewall" e nel mio caso è stato un problema sensibile al maiuscolo / minuscolo ... ho scritto cantina invece di Cantina. quando ho usato Capital C, ha funzionato !! Grazie
Ofer Segev il

3

Ho cercato di capirlo per anni, alla fine facendo quanto segue nel terminale:

$ 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

E sembrava risolvere il problema.

Ho anche trascinato l'applicazione nginx nell'elenco delle applicazioni approvate sul firewall OS X.


Questi passaggi hanno funzionato per me, ma ho anche dovuto riavviare nginxil sito Web per iniziare effettivamente il caricamento.
Ippopotamo il

0

Ho riscontrato questo stesso problema. Sospetto che abbia a che fare con il modello di processo master / worker di nginx che confonde l'implementazione di Apple Appfirewall.

La soluzione che ho trovato è dire a appfirewall di consentire il processo nginx:

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

Non ricordo se questo persiste nei riavvii o meno. In caso contrario, crea una finestra di avvio in / Library / LaunchAgents per farlo all'avvio, se lo desideri.


1
Questo non funziona su 10.8. Si lamenta che -t è un'opzione non valida. Inoltre, se aggiungo tramite --add `quale nginx`, lo aggiunge, ma non lo riconosce se vado a rimuoverlo con l'opzione --remove.
Brendan,

Non funziona neanche su Mac OS X 10.9.3. Apple ha rimosso l' -topzione.
Siu Ching Pong -Asuka Kenji-

0

cambia il tuo $ PERCORSO

lasciare che il sistema trovare la nginx in /usr/local/Cellar/nginx/nginx-xx/bin/nginxprimo luogo


0

Sono su El Capitan (10.11.6). È possibile escludere manualmente nginxdal firewall utilizzando la GUI. Questo mi ha risolto.

Innanzitutto, vai alle Preferenze di Sistema. Quindi vai su Sicurezza e privacy e fai clic sulla scheda Firewall.

Fai clic sul pulsante "Opzioni firewall" e aggiungi qui nginxcome applicazione esclusa:

inserisci qui la descrizione dell'immagine

Nginx si trovava dentro /usr/local/Cellar/nginx/1.10.3/bin/nginxper me. Non sono riuscito a navigare su questo in Esplora file in Preferenze di Sistema, quindi per aggirarlo ho fatto un collegamento nginxsul mio desktop e l'ho selezionato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.