De repente, estou recebendo o erro nginx abaixo
* Restarting nginx
* Stopping nginx nginx
...done.
* Starting nginx nginx
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] bind() to [::]:80 failed (98: Address already in use)
nginx: [emerg] still could not bind()
...done.
...done.
Se eu correr
lsof -i :80 or sudo fuser -k 80/tcp
Eu não recebo nada. Nada na porta 80
Então eu corro o abaixo:
sudo netstat -pan | grep ":80"
tcp 0 0 127.0.0.1:8070 0.0.0.0:* LISTEN 15056/uwsgi
tcp 0 0 10.170.35.97:39567 10.158.58.13:8080 TIME_WAIT -
tcp 0 0 10.170.35.97:39564 10.158.58.13:8080 TIME_WAIT -
tcp 0 0 10.170.35.97:39584 10.158.58.13:8080 TIME_WAIT -
tcp 0 0 10.170.35.97:39566 10.158.58.13:8080 TIME_WAIT -
tcp 0 0 10.170.35.97:39571 10.158.58.13:8080 TIME_WAIT -
tcp 0 0 10.170.35.97:39580 10.158.58.13:8080 TIME_WAIT -
tcp 0 0 10.170.35.97:39562 10.158.58.13:8080 TIME_WAIT -
tcp 0 0 10.170.35.97:39582 10.158.58.13:8080 TIME_WAIT -
tcp 0 0 10.170.35.97:39586 10.158.58.13:8080 TIME_WAIT -
tcp 0 0 10.170.35.97:39575 10.158.58.13:8080 TIME_WAIT -
tcp 0 0 10.170.35.97:39579 10.158.58.13:8080 TIME_WAIT -
tcp 0 0 10.170.35.97:39560 10.158.58.13:8080 TIME_WAIT -
tcp 0 0 10.170.35.97:39587 10.158.58.13:8080 TIME_WAIT -
tcp 0 0 10.170.35.97:39591 10.158.58.13:8080 TIME_WAIT -
tcp 0 0 10.170.35.97:39589 10.158.58.13:8080 TIME_WAIT -
Estou perplexo. Como depuro isso?
Estou usando o uwsgi com uma passagem de proxy na porta 8070. o uwsgi está em execução. Nginx não é. Estou usando o ubuntu 12.4
Abaixo estão as partes relevantes do meu arquivo conf nginx
upstream uwsgi_frontend {
server 127.0.0.1:8070;
}
server {
listen 80;
server_name 127.0.0.1;
location = /favicon.ico {
log_not_found off;
}
location / {
include uwsgi_params;
uwsgi_buffering off;
uwsgi_pass 127.0.0.1:8070;
}
}
Aqui está como eu instalo o nginx no ubuntu 12.04
nginx=stable;add-apt-repository ppa:nginx/$nginx;
apt-get update
apt get install nginx-full
Respostas:
[::]:80
é um endereço ipv6.Este erro pode ser causado se você tiver uma configuração nginx que esteja escutando na porta 80 e também na porta
[::]:80
.Eu tinha o seguinte no meu arquivo disponível em sites padrão:
Você pode corrigir isso adicionando
ipv6only=on
o[::]:80
seguinte:Para mais informações, veja:
http://forum.linode.com/viewtopic.php?t=8580
http://wiki.nginx.org/HttpCoreModule#listen
fonte
/etc/nginx/sites-available/default
ajuda no erro acima.sudo service nginx restart
. Quando faço issonetstat -tulpn |grep 80
, recebo apenas uma vez o processo nginx (0.0.0.0:80). Alguma idéia de por que não será reiniciado?ipv6only=on
corrigiu o problema, mas o nginx deve realmente detectar que está tentando se conectar à mesma interface: porta duas vezes.Corrigi isso executando
sudo apachectl stop
- verifica-se que o apache estava sendo executado em segundo plano e impediu que o nginx iniciasse na porta desejada.No ubuntu run
sudo /etc/init.d/apache2 stop
fonte
sudo /etc/init.d/apache2 stop
para parar o apache no Ubuntu 14.04php
arquivos), proxy para a porta Apache.Meu caso é diferente, tive que matar o Nginx para reiniciá-lo.
Ao invés de
Eu tive que usar:
fonte
Encontrei o problema que nunca tive antes.
Eu apenas tive que excluir
/etc/nginx/sites-available/default
. Então funcionou.Meu conf estava dentro
/etc/nginx/default
.fonte
listen 80;
o mesmo modelo já resolve o problema e corretamente. Seu truque funciona, mas não é o que eu gostaria que os futuros leitores de sua pergunta fizessem. Por isso, sugiro que você selecione a resposta de @ Nathan como a resposta correta.apt-get dist-upgrade
, que atualizou o pacote nginx, que criou um link/etc/nginx/sites-enabled
para/etc/nginx/sites-available/default
. O nginx estava tentando carregar essa configuração padrão, que escuta a porta 80 pelo IPv6, e também carregava minhas configurações reais de leitura. A remoção desse link simbólico corrigiu o problema./etc/nginx/sites-available/default
, basta remover o link simbólico para elesudo rm /etc/nginx/sites-enabled/default
nginx
na porta 8080 evarnish
na porta 80 e semelhante a esta resposta, encontrei o problema em umanginx
configuração padrão ainda ouvindo na porta 80, mesmo que minhassites-available
configurações tenham escutado na porta 8080. Isso estava localizado em/etc/nginx/conf.d/default
Eu também estava recebendo o mesmo erro.
e quando eu digitei o host local no navegador, estava recebendo
Essa é a página da web padrão pra esse servidor.
O software do servidor da web está sendo executado, mas nenhum conteúdo foi adicionado ainda. em vez da página de boas-vindas do nginx, o apache2 está sendo executado na mesma porta,
encontre o arquivo apache2 ports.conf
mudar a porta de outra forma
80
, eu faço isso como70
Salve o arquivo
reinicie seu sistema
funcionará para você também, se você digitar o host local no navegador, receberá a página de boas-vindas do nginx
fonte
tente fazer este comando
fonte
Meu problema era que eu tinha diretrizes de escuta sobrepostas. Consegui descobrir diretivas sobrepostas executando
Dois arquivos estavam escutando na mesma porta:
fonte
grep -r listen /etc/nginx/*
obrigado por compartilhar!Eu tive o mesmo problema no letsencrypt (certbot) e nginx,
ref: https://github.com/certbot/certbot/issues/5486
este erro ainda não tem uma solução
então, um cron mudou para renovação
(colocando uma recarga após renovação)(usando sugestão do certbot)logs (curtos):
fonte
Primeiro, mude a porta de escuta apache 80 para 8080 apache em /etc/apache2/ports.conf include
ou
adicione nginx como servidor proxy reverso que escutará a porta apache
Após as alterações, reinicie o servidor nginx
Agora todo o tráfego será tratado pelo servidor nginx e enviará toda solicitação dinâmica ao apache, e o conteúdo estático será atendido pelo servidor nginx.
Para configuração avançada como cache:
https://www.linode.com/docs/web-servers/nginx/slightly-more-advanced-configurations-for-nginx/#basic-nginx-caching
fonte
Eu encontrei um problema semelhante. o log é como abaixo
O último
[emerg]
mostra oduplicate listen options for [::]:80
que significa que há mais de um arquivo de bloco nginx contendo[::]:80
.Minha solução é remover uma das
[::]:80
configuraçõesPS: você provavelmente tem um arquivo de bloqueio padrão. Meu conselho é manter esse arquivo como servidor padrão para a porta 80. e remover
[::]:80
de outros arquivos de blocofonte
Uso o supervisor para executar o Nginx e o Gunicorn lado a lado em um contêiner do Docker.
Esta foi a configuração usada para o supervisor:
O problema foi como lancei o Ngnix: por padrão, ele é executado em primeiro plano. Isso faz com que o supervisor tente novamente executar outra instância do Nginx.
Ao adicionar
-g 'daemon off;'
à linha de comando, o Nginx ficou em primeiro plano, o supervisor parou de tentar executar outra instância.fonte
No meu caso, um dos serviços Apache, Apache2 ou Nginx já estava em execução e, por isso, não consegui iniciar o outro serviço.
fonte
Eu tinha vários arquivos * .save (despejos de emergência do nano) de diferentes arquivos de configuração do NGINX no meu diretório de sites disponíveis. Depois de excluir esses arquivos .save, o NGINX foi reiniciado corretamente. Presumi que eles eram inofensivos, pois não havia links simbólicos correspondentes, mas acho que estava errado.
fonte
Para seguir para as respostas @ lfender6445 e @SAURABH -
Meu problema também foi o fato de que, após a atualização para o Vagrant 2.2.2, o Apache2 estava sendo executado como servidor da web quando o convidado foi inicializado. No passado, eu só tinha o nginx como servidor da web.
vagrant ssh na caixa e execute o seguinte comando para desativar a inicialização do Apache2 sempre que a caixa de convidado for inicializada:
Sair ssh, parada vagrant, vagrant up. Problema resolvido.
fonte
Se o problema persistir após tentar qualquer uma das soluções acima, reinicie o servidor uma vez. Funcionou para mim :)
fonte
No meu caso, o culpado acabou sendo um bloco de servidor que continha:
No Linux, um soquete que escuta um IP específico (por exemplo
[::1]:80
) entra em conflito com um soquete que escuta na mesma porta, mas qualquer IP (ou seja[::]:80
). Normalmente, o nginx lida com esse problema de forma transparente, usando um único soquete nos bastidores. No entanto, a especificação explícitaipv6only
(ou certas outras opções) da diretiva listen força o nginx a (tentar) criar um soquete separado para ela, resultando noAddress already in use
erro.Como
ipv6only=on
é o padrão de qualquer maneira (desde a versão 1.3.4), a correção foi simplesmente remover essa opção desta diretiva e garantir queipv6only
não fosse usada em nenhum outro lugar da minha configuração.fonte
Eu tenho o mesmo problema, mas vejo a porta 80 ouvida pelo Nginx:
Mas quando tento reiniciá-lo, tenho o erro:
Meu problema estava no arquivo de configuração, estou definido como arquivo PID e parece que o sistema não pode capturá-lo corretamente:
Quando o removi, funcionou.
fonte