Pare-feu Mac bloquant Nginx (port 80) du côté externe

10

J'ai installé nginx à l'aide de ports et l'ai démarré avec sudo. L'accès à la page d'accueil nginx à partir de localhost fonctionne parfaitement, mais y accéder à partir d'un ordinateur externe échoue.

Faire un nmap sur l'ordinateur de l'extérieur révèle

80/tcp   filtered http

Il est donc clair que le pare-feu mac bloque le port. Je procède ensuite à l'ajout de l'exécutable nginx à la liste d'exceptions du pare-feu, mais le nmap apparaît toujours comme le port 80 filtré et je ne parviens pas à accéder à la page Web. Le binaire exact qui est dans la liste est / opt / local / sbin / nginx qui à ma connaissance semble correct

Des idées sur ce que je dois faire? Merci!

PS La désactivation du pare-feu me permet d'accéder au site Web depuis le monde extérieur, mais ce n'est pas une solution idéale.

Alex Ionescu
la source
Je n'ai pas de réponse, mais voici quelques éléments à regarder: vérifiez /var/log/appfirewall.log pour voir s'il a quelque chose d'utile, et exécutez sudo lsof -i:80pour vous assurer que c'est vraiment nginx qui fait l'écoute (et que il écoute sur toutes les IP, pas seulement 127.0.0.1).
Gordon Davisson
Hé Gordon, merci pour les suggestions! Mon journal de pare-feu ressemble à ceci lorsque j'essaie de me connecter: 18 décembre 02:12:56 MacBook-Pro.local socketfilterfw [80663] <Info>: Refuser la connexion depuis my.ip.is.here:55843 au port 80 proto = 6 Et voici la sortie de la table d'écoute: nginx 80437 root 6u IPv4 0x35ec104ccb86c175 0t0 TCP *: http (LISTEN) nginx 80438 nobody 6u IPv4 0x35ec104ccb86c175 0t0 TCP *: http (LISTEN) On dirait que tout devrait être correct, mais il est toujours bloqué :(
Alex Ionescu
Est-il possible que vous ayez deux exécutables nginx, l'un autorisé dans le pare-feu et l'autre non? C'est la seule chose à laquelle je peux penser ...
Gordon Davisson

Réponses:

10

Cela a fonctionné pour moi (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

Lorsque vous essayez de le faire via un lien symbolique (pour éviter de refaire ce processus lorsque nginx est mis à niveau), vous obtenez l'erreur suivante: L'application ne fait pas partie du pare-feu après l'exécution:

sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /usr/local/bin/nginx
Eugène
la source
J'ai reçu le même message "L'application ne fait pas partie du pare-feu", et dans mon cas c'était un problème sensible à la casse ... j'ai écrit cellar au lieu de Cellar. quand j'ai utilisé Capital C, ça a fonctionné !! Merci
Ofer Segev
3

J'essaie de comprendre cela depuis des siècles, finalement en procédant comme suit dans le 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

Et cela a semblé résoudre le problème.

J'ai également fait glisser l'application nginx dans la liste des applications approuvées sur le pare-feu OS X.

John Griffiths
la source
Ces étapes ont fonctionné pour moi, mais j'ai également dû redémarrer nginxpour que le site Web commence réellement à se charger.
Hippo
0

J'ai rencontré ce même problème. Je soupçonne que cela a à voir avec le modèle de processus maître / travailleur de nginx confondant la mise en œuvre du pare-feu d'Apple.

La solution que j'ai trouvée est de dire à appfirewall d'autoriser le processus nginx:

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

Je ne me souviens pas si cela persiste à travers les redémarrages ou non. Si ce n'est pas le cas, créez une liste de lancement dans / Library / LaunchAgents pour le faire au démarrage, si vous le souhaitez.

dossy
la source
1
Cela ne fonctionne pas sur 10.8. Il se plaint que -t est une option non valide. De plus, si j'ajoute via --add `which nginx`, il l'ajoute, mais il ne le reconnaît pas si je le supprime avec l'option --remove.
Brendan
Cela ne fonctionne pas non plus sur Mac OS X 10.9.3. Apple a supprimé l' -toption.
Siu Ching Pong -Asuka Kenji-
0

changez votre $ PATH

laissez le système trouver le nginx en /usr/local/Cellar/nginx/nginx-xx/bin/nginxpremier

mars1993
la source
0

Je suis sur El Capitan (10.11.6). Vous pouvez exclure manuellement nginxdu pare-feu à l'aide de l'interface graphique. Cela l'a résolu pour moi.

Tout d'abord, allez dans les Préférences Système. Accédez ensuite à Sécurité et confidentialité, puis cliquez sur l'onglet Pare-feu.

Cliquez sur le bouton «Options du pare-feu» et ajoutez-les en nginxtant qu'application exclue ici:

entrez la description de l'image ici

Nginx était localisé /usr/local/Cellar/nginx/1.10.3/bin/nginxpour moi. Je ne pouvais pas y accéder dans l'explorateur de fichiers dans les Préférences Système, donc pour le contourner, j'ai créé un raccourci nginxsur mon bureau et l'ai sélectionné.

dspacejs
la source