[ubuntu] nginx-nginx : [emerg] bind () ~ [::] : 80 실패 (98 : 이미 사용중인 주소)

갑자기 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가 동일한 포트에서 실행 중입니다.

  1. apache2 ports.conf 파일을 찾으십시오

    sudo /etc/apache2/ports.conf
    
  2. 그 다음 다른 포트를 변경 80, 나는 그것을 만들70

  3. 파일을 저장

  4. 시스템을 다시 시작하십시오

브라우저에 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;