Firewall de Mac que bloquea nginx (puerto 80) desde el lado externo

10

Instalé nginx usando puertos y lo comencé con sudo. El acceso a la página de bienvenida de nginx desde localhost funciona perfectamente, sin embargo, el acceso desde una computadora externa falla.

Hacer un nmap en la computadora desde el exterior revela

80/tcp   filtered http

Claramente, el firewall de Mac está bloqueando el puerto. Luego procedo a agregar el ejecutable nginx a la lista de excepciones del firewall, sin embargo, el nmap todavía aparece como el puerto 80 que se está filtrando y no puedo acceder a la página web. El binario exacto que está en la lista es / opt / local / sbin / nginx, que yo sepa parece correcto

¿Alguna idea de lo que debo hacer? ¡Gracias!

PD: Desactivar el firewall me permite acceder al sitio web desde el mundo exterior, sin embargo, esa no es una solución ideal.

Alex Ionescu
fuente
No tengo una respuesta, pero aquí hay un par de cosas que mirar: verifique /var/log/appfirewall.log para ver si tiene algo útil, y ejecute sudo lsof -i:80para asegurarse de que realmente nginx está escuchando (y eso está escuchando en todas las IP, no solo 127.0.0.1).
Gordon Davisson
Hola Gordon, gracias por las sugerencias! Mi registro de firewall se ve así cuando intento conectarme: 18 de diciembre 02:12:56 MacBook-Pro.local socketfilterfw [80663] <Información>: Denegar la conexión desde my.ip.is.here:55843 al puerto 80 proto = 6 Y esta es la salida de la tabla de escucha: nginx 80437 root 6u IPv4 0x35ec104ccb86c175 0t0 TCP *: http (LISTEN) nginx 80438 nobody 6u IPv4 0x35ec104ccb86c175 0t0 TCP *: http (LISTEN) Parece que todo debería estar correcto, pero todavía se está bloqueando, :(
Alex Ionescu
¿Es posible que tenga dos ejecutables nginx, uno permitido en el firewall y otro no? Eso es lo único en lo que puedo pensar ...
Gordon Davisson

Respuestas:

10

Esto funcionó para mí (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

Cuando trató de hacerlo a través del enlace simbólico (para evitar rehacer este proceso cuando se actualiza nginx), obtuvo el siguiente error: La aplicación no forma parte del firewall después de ejecutarse:

sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /usr/local/bin/nginx
Eugene
fuente
Recibí el mismo mensaje "La aplicación no es parte del firewall", y en mi caso fue un asunto sensible a mayúsculas y minúsculas ... escribí bodega en lugar de bodega. cuando usé Capital C, ¡funcionó! Gracias
Ofer Segev
3

He estado tratando de resolver esto durante años, eventualmente haciendo lo siguiente en la terminal:

$ 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

Y parecía solucionar el problema.

También arrastré la aplicación nginx a la lista de aplicaciones aprobadas en el firewall de OS X.

John Griffiths
fuente
Estos pasos funcionaron para mí, pero también tuve que reiniciar nginxpara que el sitio web realmente comenzara a cargarse.
Hippo
0

Me he encontrado con este mismo problema. Sospecho que tiene que ver con el modelo de proceso maestro / trabajador de nginx que confunde la implementación de firewall de aplicaciones de Apple.

La solución que he encontrado es decirle a appfirewall que permita el proceso nginx:

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

No recuerdo si esto persiste durante los reinicios o no. Si no es así, cree una lista de inicio en / Library / LaunchAgents para hacer esto en el arranque, si lo desea.

dossy
fuente
1
Esto no funciona en 10.8. Se queja de que -t es una opción no válida. Además, si agrego a través de --add `which nginx`, lo agrega, pero no lo reconoce si voy a eliminarlo con la opción --remove.
Brendan
Esto tampoco funciona en Mac OS X 10.9.3. Apple ha eliminado la -topción.
Siu Ching Pong -Asuka Kenji-
0

cambia tu $ PATH

deje que el sistema encuentre el nginx en /usr/local/Cellar/nginx/nginx-xx/bin/nginxprimer lugar

marzo1993
fuente
0

Estoy en El Capitan (10.11.6). Puede excluir manualmente nginxdel firewall utilizando la GUI. Esto lo resolvió para mí.

Primero, vaya a las Preferencias del sistema. Luego vaya a Seguridad y privacidad y haga clic en la pestaña Firewall.

Haga clic en el botón 'Opciones de firewall' y agregue nginxcomo aplicación excluida aquí:

ingrese la descripción de la imagen aquí

Nginx fue localizado /usr/local/Cellar/nginx/1.10.3/bin/nginxpara mí. No pude navegar hacia esto en el explorador de archivos en Preferencias del sistema, así que para evitarlo hice un acceso directo nginxen mi escritorio y lo seleccioné.

dspacejs
fuente