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.