Nagle pojawia się błąd nginx poniżej
* 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.
Jeśli ucieknę
lsof -i :80 or sudo fuser -k 80/tcp
Nic nie dostaję Nic na porcie 80
Następnie uruchamiam poniżej:
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 -
Jestem zakłopotany. Jak to debugować?
Używam uwsgi z przepustką proxy na porcie 8070. uwsgi jest uruchomiony. Nginx nie jest. Używam Ubuntu 12.4
Poniżej znajdują się odpowiednie części mojego pliku 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;
}
}
Oto jak instaluję nginx na Ubuntu 12.04
nginx=stable;add-apt-repository ppa:nginx/$nginx;
apt-get update
apt get install nginx-full
Odpowiedzi:
[::]:80
to adres IPv6.Ten błąd może być spowodowany, jeśli masz konfigurację nginx, która nasłuchuje na porcie 80, a także na porcie
[::]:80
.W moim domyślnym pliku dostępnym na stronie miałem następujące elementy:
Możesz to naprawić, dodając
ipv6only=on
do[::]:80
tego:Aby uzyskać więcej informacji, zobacz:
http://forum.linode.com/viewtopic.php?t=8580
http://wiki.nginx.org/HttpCoreModule#listen
źródło
/etc/nginx/sites-available/default
pomaga w przypadku powyższego błędu.sudo service nginx restart
. Kiedy to robięnetstat -tulpn |grep 80
, otrzymuję tylko raz proces nginx (0.0.0.0:80). Wszelkie pomysły, dlaczego się nie uruchomi ponownie?ipv6only=on
naprawiło problem, ale nginx powinien naprawdę wykryć, że próbuje się połączyć z tym samym interfejsem: port dwa razy.Naprawiłem to przez uruchomienie
sudo apachectl stop
- okazało się, że apache działał w tle i uniemożliwiłem uruchamianie nginx na pożądanym porcie.W trybie Ubuntu
sudo /etc/init.d/apache2 stop
źródło
sudo /etc/init.d/apache2 stop
do zatrzymywania apache na Ubuntu 14.04php
pliki), proxy do portu Apache.Moja sprawa jest inna, musiałem zabić działający Nginx, aby go ponownie uruchomić.
Zamiast
Musiałem użyć:
źródło
Znalazłem problem, którego nigdy wcześniej nie miałem.
Musiałem tylko usunąć
/etc/nginx/sites-available/default
. Potem zadziałało.Moje conf było w środku
/etc/nginx/default
.źródło
listen 80;
ten sam szablon już rozwiązuje problem i poprawnie. Twoja sztuczka działa, ale nie tak postąpiłabym w przyszłości dla czytelników twojego pytania. Dlatego proponuję wybrać odpowiedź @ Nathan jako prawidłową.apt-get dist-upgrade
, który zaktualizował pakiet nginx, który utworzył link/etc/nginx/sites-enabled
do/etc/nginx/sites-available/default
. nginx próbował załadować tę domyślną konfigurację, która nasłuchuje na porcie 80 przez IPv6, a następnie ładował moją przeczytaną moją prawdziwą konfigurację. Usunięcie tego dowiązania symbolicznego rozwiązało problem./etc/nginx/sites-available/default
, po prostu usuń symboliczny link do niego -sudo rm /etc/nginx/sites-enabled/default
nginx
na porcie 8080 ivarnish
80 oraz podobnej do tej odpowiedzi. Znalazłem problem znginx
domyślną konfiguracją, która wciąż nasłuchuje na porcie 80, mimo żesites-available
wszystkie moje konfiguracje nasłuchiwały na porcie 8080. To było zlokalizowane na/etc/nginx/conf.d/default
Otrzymałem również ten sam błąd.
a kiedy wpisałem localhost w przeglądarce, zaczynałem otrzymywać
To jest domyślna strona internetowa dla tego serwera.
Oprogramowanie serwera WWW działa, ale nie dodano jeszcze żadnych treści. zamiast strony powitalnej nginx, apache2 działa na tym samym porcie,
znajdź plik apache2 ports.conf
zmień port inny niż
80
, robię to jako70
Zapisz plik
uruchom ponownie system
zadziała również dla Ciebie, jeśli wpiszesz localhost w przeglądarce, otrzymasz stronę powitalną nginx
źródło
spróbuj wykonać to polecenie
źródło
Mój problem polegał na tym, że miałem nakładające się instrukcje słuchania. Udało mi się znaleźć nakładające się na siebie dyrektywy, uruchamiając
Dwa pliki nasłuchiwały na tym samym porcie:
źródło
grep -r listen /etc/nginx/*
dziękuję za udostępnienie!Miałem ten sam problem w letsencrypt (certbot) i nginx,
ref: https://github.com/certbot/certbot/issues/5486
ten błąd nie ma jeszcze rozwiązania
więc zmieniono crona do odnowienia
(umieszczenie przeładowania po odnowieniu)(używając sugestii z certbota)logi (krótkie):
źródło
Najpierw zmień port nasłuchiwania apache 80 na 8080 w pliku /etc/apache2/ports.conf
lub
następnie dodaj nginx jako serwer proxy odwrotnego, który będzie nasłuchiwał portu apache
Po zmianach zrestartuj serwer nginx
Teraz cały ruch będzie obsługiwany przez serwer nginx i wysyła wszystkie żądania dynamiczne do apache, a statyczna kontrola jest obsługiwana przez serwer nginx.
W przypadku zaawansowanej konfiguracji, takiej jak pamięć podręczna:
https://www.linode.com/docs/web-servers/nginx/slightly-more-advanced-configurations-for-nginx/#basic-nginx-caching
źródło
Spotkałem podobny problem. dziennik jest jak poniżej
Ostatni
[emerg]
pokazuje to,duplicate listen options for [::]:80
co oznacza, że zawiera więcej niż jeden plik bloku nginx[::]:80
.Moim rozwiązaniem jest usunięcie jednego z
[::]:80
ustawieńPS prawdopodobnie masz domyślny plik bloku. Radzę zachować ten plik jako domyślny serwer dla portu 80. i usunąć
[::]:80
z innych plików blokówźródło
Używam superwizora, aby uruchamiać Nginx i Gunicorn obok siebie na kontenerze Docker.
To była konfiguracja zastosowana dla superwizora:
Problem polegał na tym, jak uruchomiłem Ngnix: domyślnie działa na pierwszym planie. Powoduje to, że supervise ponownie spróbuje uruchomić inną instancję Nginx.
Dodając
-g 'daemon off;'
do wiersza poleceń, Nginx pozostał na pierwszym planie, przełożony przestał próbować uruchomić inną instancję.źródło
W moim przypadku jedna z usług Apache, Apache2 lub Nginx była już uruchomiona i dlatego nie byłem w stanie uruchomić drugiej usługi.
źródło
Miałem kilka plików * .save (zrzuty alarmowe z nano) z różnych plików konfiguracyjnych NGINX w moim katalogu dostępnym na stronach. Po usunięciu tych plików .save, NGINX zrestartował się dobrze. Założyłem, że są nieszkodliwe, ponieważ nie ma odpowiednich dowiązań symbolicznych, ale chyba się myliłem.
źródło
Aby śledzić odpowiedzi na @ lfender6445 i @SAURABH -
Moim problemem był również fakt, że po aktualizacji do Vagrant 2.2.2 Apache2 działał jako serwer WWW podczas uruchamiania gościa. W przeszłości miałem tylko Nginx jako serwer WWW.
włóczącego się ssh do skrzynki i uruchom następującą komendę, aby wyłączyć uruchamianie Apache2 za każdym razem, gdy uruchamia się okno gościa:
Wyjdź ssh, włóczęgowcze zatrzymanie, włóczęgo w górę. Problem rozwiązany.
źródło
Jeśli problem nie ustąpi po wypróbowaniu dowolnego z powyższych rozwiązań, uruchom ponownie serwer raz. To zadziałało dla mnie :)
źródło
W moim przypadku sprawcą okazał się blok serwera zawierający:
W systemie Linux gniazdo nasłuchujące na określonym adresie IP (np.
[::1]:80
) Powoduje konflikt z gniazdem nasłuchującym na tym samym porcie, ale dowolnym adresem IP (tj[::]:80
.). Normalnie nginx w przejrzysty sposób poradzi sobie z tym problemem, używając jednego gniazda za tymi scenami. Jednak wyraźne określenieipv6only
(lub niektórych innych opcji) dyrektywy nasłuchu zmusza nginx do (próby) utworzenia dla niej osobnego gniazda, w wyniku czegoAddress already in use
błąd.Ponieważ i tak
ipv6only=on
jest domyślną (od 1.3.4) poprawką było po prostu usunięcie tej opcji z tej dyrektywy i upewnienie się, żeipv6only
nie jest używana nigdzie indziej w mojej konfiguracji.źródło
Mam ten sam problem, ale widzę, że port 80 nasłuchiwał Nginx:
Ale gdy próbuję go ponownie uruchomić, pojawia się błąd:
Mój problem był w pliku konfiguracyjnym, mam ustawiony plik PID i wydaje się, że system nie może go poprawnie złapać:
Kiedy go usunąłem, zadziałało.
źródło