Não consigo fazer o Nginx funcionar na porta 80. Funciona bem em qualquer outra porta

Não consigo fazer o Nginx funcionar na porta 80. Funciona bem em qualquer outra porta

Acabei de configurar o Nginx do Homebrew no Mac OS X 10.11 (El Capitan).

Se eu definir minha configuração do Ngnix assim:

listen      127.0.0.1:8080;

listen      127.0.0.1:81;

listen      127.0.0.1:75;

Vai funcionar. Mas se eu colocar isso lá:

listen      127.0.0.1:80;

Não vai. Terei a conexão recusada se eu forhttp://127.0.0.1

psdiz que o Nginx está em execução, mas netstat -a | grep nginxor netstat -a | grep 80diz que não está.

Executando isso como root, é claro (não que eu precise disso para rodar em:8080

E o Firewall do Mac OS X não está funcionando.

O log de erros não mostra mais isso:

2015/10/10 17:16:19 [emerg] 23906#0: bind() to 0.0.0.0:80 failed (48: Address already in use)

Alguma ideia? POSSO trabalhar com isso rodando 8080(curiosamente, quando executo o 8080, ele abre a 80porta e redireciona para 80).

Responder1

OSX reiniciado. Trabalhado. Acho que com o Linux seria diferente.

Responder2

O erro é o seguinte:

2015/10/10 17:16:19 [emerg] 23906#0: bind() to 0.0.0.0:80 failed (48: Address already in use)

Esse “Endereço já em uso” diz tudo: algo mais em seu sistema está usando a porta 80. Você tem o compartilhamento da web ativado ou talvez o Apache instalado e em execução? A maneira de verificar isso é executando lsofassim em seu sistema:

sudo lsof -i -P | grep -i "80"

Isso mostrará estritamente qual processo pode estar usando a porta 80. Se você estiver curioso para ver quais outras portas estão configuradas para “escutar” em seu sistema Mac OS X, basta executar este comando:

sudo lsof -i -P

E se você quiser apenas verificar se a porta 80 está em uso, você pode usar esta variação do lsofcomando que permite verificar isso sem filtrar a saída com grep:

sudo lsof -nPL -iTCP:80

Responder3

Em sistemas baseados em Unix, como MacOS, você simplesmente não pode executar serviços em portas abaixo de 1024 sem privilégio de superusuário. Mas quando você reinicia o computador, o serviço nginx é reiniciado automaticamente com superusuário, então funciona.

O seguinte comando deve resolver o problema:

sudo brew services restart nginx

Responder4

Resolvi este problema (tenho MacBook Air com chip M1):

  1. Remova httpd (se tiver)
  2. Desativar apachelink
  3. Instale o nginx
  4. Mude a porta para 80 de/usr/local/etc/nginx/nginx.conf

informação relacionada