Firewall do Mac bloqueando o nginx (porta 80) do lado externo


10

Instalei o nginx usando ports e o iniciei com o sudo. O acesso à página de boas-vindas do nginx a partir do host local funciona perfeitamente, mas o acesso a partir de um computador externo falha.

Fazer um nmap no computador do lado de fora revela

80/tcp   filtered http

Tão claramente que o firewall do mac está bloqueando a porta. Em seguida, prossigo para adicionar o executável nginx à lista de exceções do firewall, no entanto, o nmap ainda aparece como a porta 80 sendo filtrada e não consigo acessar a página da web. O binário exato que está na lista é / opt / local / sbin / nginx que, a meu conhecimento, parece correto

Alguma idéia do que devo fazer? Obrigado!

PS Desligar o firewall me permite acessar o site do mundo exterior, no entanto, essa não é a solução ideal.


Eu não tenho uma resposta, mas aqui estão algumas coisas para olhar: verifique /var/log/appfirewall.log para ver se ele tem alguma coisa útil e corra sudo lsof -i:80para garantir que realmente o nginx esteja ouvindo (e que está escutando em todos os IPs, não apenas em 127.0.0.1).
Gordon Davisson

Hey Gordon, obrigado pelas sugestões! Meu log do firewall fica assim quando tento conectar: ​​18 de dezembro 02:12:56 MacBook-Pro.local socketfilterfw [80663] <Info>: Negar conexão de my.ip.is.here:55843 à porta 80 proto = 6 E esta é a saída da tabela de escuta: nginx 80437 raiz 6u IPv4 0x35ec104ccb86c175 0t0 TCP *: http (LISTEN) nginx 80438 ninguém 6u IPv4 0x35ec104ccb86c175 0t0 TCP *: http (LISTEN) Parece que tudo deve estar correto, mas ainda está sendo bloqueado :(
Alex Ionescu

É possível que você tenha dois executáveis ​​nginx, um permitido no firewall e outro não? Essa é a única coisa em que consigo pensar ...
Gordon Davisson

Respostas:


10

Isso funcionou para mim (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

Ao tentar fazer isso através do link simbólico (para evitar refazer esse processo quando o nginx é atualizado), ocorreu o seguinte erro: O aplicativo não faz parte do firewall após a execução:

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

Recebi a mesma mensagem "O aplicativo não faz parte do firewall" e, no meu caso, era um problema sensível a maiúsculas e minúsculas ... escrevi adega em vez de adega. quando usei Capital C, funcionou !! Obrigado
Ofer Segev

3

Estou tentando descobrir isso há muito tempo, eventualmente fazendo o seguinte no 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

E parecia corrigir o problema.

Também arrastei o aplicativo nginx para a lista de aplicativos aprovados no firewall do OS X.


Essas etapas funcionaram para mim, mas também tive que reiniciar nginxpara o site realmente começar a carregar.
Hipopótamo

0

Eu já tive esse mesmo problema. Eu suspeito que isso tenha a ver com o modelo de processo master / worker do nginx, confundindo a implementação do appfirewall da Apple.

A solução que encontrei é dizer ao appfirewall para permitir o processo nginx:

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

Não me lembro se isso persistir durante as reinicializações ou não. Caso contrário, crie uma lista de inicialização em / Library / LaunchAgents para fazer isso na inicialização, se desejar.


1
Isso não funciona no 10.8. Ele reclama que -t é uma opção inválida. Além disso, se eu adicionar via --add `what nginx`, ele será adicionado, mas não o reconhecerá se for removê-lo com a opção --remove.
Brendan

Isso também não funciona no Mac OS X 10.9.3. A Apple removeu a -topção.
Siu Ching Pong -Asuka Kenji-

0

mude seu $ PATH

deixe o sistema encontrar o nginx em /usr/local/Cellar/nginx/nginx-xx/bin/nginxprimeiro lugar


0

Estou no El Capitan (10.11.6). Você pode excluir manualmente nginxdo firewall usando a GUI. Isso resolveu para mim.

Primeiro, acesse as Preferências do Sistema. Em seguida, vá para Segurança e privacidade e clique na guia Firewall.

Clique no botão 'Opções de firewall' e adicione nginxcomo um aplicativo excluído aqui:

insira a descrição da imagem aqui

Nginx foi localizado /usr/local/Cellar/nginx/1.10.3/bin/nginxpara mim. Não consegui navegar para isso no explorador de arquivos nas Preferências do Sistema, então, para contornar isso, criei um atalho nginxna área de trabalho e selecionei isso.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.