갑자기 nginx 이하의 오류가 발생합니다.
* 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.
내가 달리면
lsof -i :80 or sudo fuser -k 80/tcp
나는 아무것도 얻지 못한다. 포트 80에 아무것도 없음
그런 다음 아래를 실행합니다.
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 -
나는 충격을 받았다. 이것을 어떻게 디버깅합니까?
포트 8070에서 프록시 패스와 함께 uwsgi를 사용하고 있습니다. uwsgi가 실행 중입니다. Nginx는 아닙니다. 우분투 12.4를 사용하고 있습니다.
아래는 내 nginx conf 파일의 관련 부분입니다
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;
}
}
우분투 12.04에 nginx를 설치하는 방법은 다음과 같습니다.
nginx=stable;add-apt-repository ppa:nginx/$nginx;
apt-get update
apt get install nginx-full
답변
[::]:80
ipv6 주소입니다.
이 오류는 포트 80과 포트에서 수신 대기하는 nginx 구성이있는 경우 발생할 수 있습니다 [::]:80
.
기본 사이트 사용 가능 파일에 다음이 있습니다.
listen 80;
listen [::]:80 default_server;
ipv6only=on
다음 [::]:80
과 같이 추가 하면 이 문제를 해결할 수 있습니다 .
listen 80;
listen [::]:80 ipv6only=on default_server;
자세한 내용은 다음을 참조하십시오.
http://forum.linode.com/viewtopic.php?t=8580
http://wiki.nginx.org/HttpCoreModule#listen
답변
나는 이것을 실행 sudo apachectl stop
하여 고쳤습니다-아파치가 백그라운드에서 실행 중이며 nginx가 원하는 포트에서 시작되지 않는 것으로 나타났습니다.
우분투 실행 sudo /etc/init.d/apache2 stop
답변
내 경우는 다르므로 Nginx를 종료하여 다시 시작해야했습니다.
대신에
sudo systemctl restart nginx
나는 사용해야했다 :
sudo pkill -f nginx & wait $!
sudo systemctl start nginx
답변
이전에는 없었던 문제를 발견했습니다.
방금 삭제해야했습니다 /etc/nginx/sites-available/default
. 그런 다음 효과가있었습니다.
내 친구는에 /etc/nginx/default
있었습니다.
답변
나는 또한 같은 오류가 발생했습니다.
nginx : [emerg] bind () ~ [::] : 80 실패 (98 : 이미 사용중인 주소)
브라우저에 localhost를 입력하면
효과가있다!
이 서버의 기본 웹 페이지입니다.
웹 서버 소프트웨어가 실행 중이지만 아직 컨텐츠가 추가되지 않았습니다. nginx 시작 페이지 대신 apache2가 동일한 포트에서 실행 중입니다.
-
apache2 ports.conf 파일을 찾으십시오
sudo /etc/apache2/ports.conf
-
그 다음 다른 포트를 변경
80
, 나는 그것을 만들70
-
파일을 저장
-
시스템을 다시 시작하십시오
브라우저에 localhost를 입력하면 nginx 시작 페이지가 표시됩니다.
답변
이 명령을 시도하십시오
sudo fuser -k 443/tcp
service nginx restart
답변
내 문제는 듣는 지시문이 겹치는 문제였습니다. 실행하여 겹치는 지시문을 파악했습니다.
grep -r listen /etc/nginx/*
두 개의 파일이 동일한 포트에서 청취 중입니다.
/etc/nginx/conf.d/default.conf: listen 80;
/etc/nginx/sites-enabled/default.conf: listen 80;