Внезапно я получаю сообщение об ошибке ниже 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 -
Я в тупике. Как мне отладить это?
Я использую UWSGI с прокси-портом на порт 8070. UWSGI работает. Nginx нет. Я использую Ubuntu 12.4
Ниже приведены соответствующие части моего файла конфигурации 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;
}
}
Вот как я устанавливаю nginx на Ubuntu 12.04
nginx=stable;add-apt-repository ppa:nginx/$nginx;
apt-get update
apt get install nginx-full
Ответы:
[::]:80
это адрес ipv6.Эта ошибка может быть вызвана, если у вас есть конфигурация nginx, которая прослушивает порт 80, а также порт
[::]:80
.В моем файле по умолчанию для сайтов было следующее:
Вы можете исправить это, добавив
ipv6only=on
к[::]:80
этому:Для получения дополнительной информации см .:
http://forum.linode.com/viewtopic.php?t=8580
http://wiki.nginx.org/HttpCoreModule#listen
источник
/etc/nginx/sites-available/default
помогает с вышеуказанной ошибкой.sudo service nginx restart
. Когда я это делаюnetstat -tulpn |grep 80
, я получаю только один раз процесс nginx (0.0.0.0:80). Есть идеи, почему он не перезапустится?ipv6only=on
исправила проблему, но nginx должен действительно обнаружить, что он пытается привязаться к одному и тому же интерфейсу: порт дважды.я исправил это, запустив
sudo apachectl stop
- оказалось, что apache работал в фоновом режиме и предотвратил запуск nginx на желаемом порту.На убунту беги
sudo /etc/init.d/apache2 stop
источник
sudo /etc/init.d/apache2 stop
для остановки apache в Ubuntu 14.04php
файлов) используйте прокси для порта Apache.Мой случай другой, мне пришлось убить запуск Nginx, чтобы перезапустить его.
Вместо того
Я должен был использовать:
источник
Я нашел проблему, которой у меня никогда не было.
Я просто должен был удалить
/etc/nginx/sites-available/default
. Тогда это сработало.Мой конф был в
/etc/nginx/default
.источник
listen 80;
в этом же шаблоне, уже решает проблему и правильно делает это. Ваш трюк работает, но это не то, что я хотел бы сделать для будущих читателей вашего вопроса. Вот почему я предлагаю вам выбрать правильный ответ @ Nathan.apt-get dist-upgrade
, который обновил пакет nginx, который создал ссылку/etc/nginx/sites-enabled
на/etc/nginx/sites-available/default
. nginx пытался загрузить эту конфигурацию по умолчанию, которая прослушивает порт 80 через IPv6, затем он также загружал мои прочитанные мои настоящие конфиги. Удаление этой символической ссылки решило проблему./etc/nginx/sites-available/default
, просто удалите символическую ссылку на него -sudo rm /etc/nginx/sites-enabled/default
nginx
порт 8080 иvarnish
порт 80 и аналогично этому ответу. Я обнаружил проблему вnginx
конфигурации по умолчанию, все еще прослушивающей порт 80, хотя все моиsites-available
конфиги прослушивали порт 8080. Он был расположен по адресу/etc/nginx/conf.d/default
Я также получал ту же ошибку.
и когда я набрал localhost в браузере, то я получал
Это веб-страница по умолчанию для этого сервера.
Программное обеспечение веб-сервера работает, но контент еще не добавлен. вместо страницы приветствия nginx apache2 работает на том же порту,
найти файл apache2 ports.conf
измените порт другой тогда
80
, я делаю это как70
сохранить файл
перезагрузите вашу систему
это будет работать и для вас, если вы введете localhost в браузере, вы получите страницу приветствия nginx
источник
попробуйте сделать эту команду
источник
Моя проблема заключалась в том, что у меня были перекрывающиеся директивы прослушивания. Мне удалось выяснить перекрывающиеся директивы, запустив
Два файла слушали на одном и том же порту:
источник
grep -r listen /etc/nginx/*
спасибо, что поделились!У меня была такая же проблема в letsencrypt (certbot) и nginx,
ссылка: https://github.com/certbot/certbot/issues/5486
эта ошибка пока не имеет решения
Итак, изменен cron для возобновления
(добавление перезагрузки после возобновления)(используя предложение от certbot)журналы (короткие):
источник
Сначала измените apache listen port 80 на 8080 apache в /etc/apache2/ports.conf include
или
затем добавьте nginx в качестве обратного прокси-сервера, который будет прослушивать порт apache
После изменений перезапустите сервер nginx
Теперь весь трафик будет обрабатываться сервером nginx и отправлять весь динамический запрос в apache, а статический контент обслуживается сервером nginx.
Для предварительной настройки, такой как кеш:
https://www.linode.com/docs/web-servers/nginx/slightly-more-advanced-configurations-for-nginx/#basic-nginx-caching
источник
Я встретил подобную проблему. журнал как ниже
Последнее
[emerg]
показывает, чтоduplicate listen options for [::]:80
это означает, что существует более одного блочного файла nginx, содержащего[::]:80
.Мое решение состоит в том, чтобы удалить один из
[::]:80
параметровPS у вас наверное есть файл блока по умолчанию. Мой совет - сохранить этот файл в качестве сервера по умолчанию для порта 80 и удалить его
[::]:80
из других файлов блоков.источник
Я использую supervisor для одновременного запуска Nginx и Gunicorn в контейнере Docker.
Эта конфигурация использовалась для супервизора:
Проблема заключалась в том, как я запустил Ngnix: по умолчанию он работает на переднем плане. Это заставляет supervise повторить попытку запуска другого экземпляра Nginx.
Добавив
-g 'daemon off;'
в командную строку, Nginx остался на переднем плане, супервизор прекратил попытки запуска другого экземпляра.источник
В моем случае одна из служб Apache, Apache2 или Nginx уже работала, и из-за этого я не смог запустить другую службу.
источник
У меня было несколько * .save файлов (аварийных дампов из nano) из разных конфигурационных файлов NGINX в моем каталоге сайтов. Как только я удалил эти .save файлы, NGINX перезапустился нормально. Я предположил, что они безвредны, так как не было соответствующих символических ссылок, но я ошибся.
источник
Чтобы ответить на ответы @ lfender6445 и @SAURABH -
Моей проблемой был также тот факт, что после обновления до Vagrant 2.2.2 Apache2 работал в качестве веб-сервера при загрузке гостя. В прошлом у меня был только nginx в качестве веб-сервера.
vagrant ssh в коробку и выполните следующую команду, чтобы отключить запуск Apache2 при каждой загрузке гостевого ящика:
Выход из SSH, бродячая остановка, бродяга вверх. Задача решена.
источник
Если проблема не устраняется после попытки любого из вышеперечисленных решений, перезапустите сервер один раз. У меня это сработало :)
источник
В моем случае виновником оказался серверный блок, содержащий:
В Linux сокет, прослушивающий определенный IP (например
[::1]:80
), конфликтует с сокетом, прослушивающим тот же порт, но с любым IP (т.е.[::]:80
). Обычно nginx прозрачно решает эту проблему, используя один сокет за кулисами. Однако явное указаниеipv6only
(или некоторые другие параметры) в директиве listen заставляет nginx (пытаться) создать отдельный сокет для него, что приведет кAddress already in use
ошибке.Так
ipv6only=on
как в любом случае это значение по умолчанию (начиная с 1.3.4), исправление состояло в том, чтобы просто удалить эту опцию из этой директивы и убедиться, чтоipv6only
она не была использована где-либо еще в моей конфигурации.источник
У меня та же проблема, но я вижу, что порт 80 прослушивается Nginx:
Но когда я пытаюсь перезапустить его, у меня появляется ошибка:
Моя проблема была в файле конфигурации, я установил файл PID, и кажется, что система не может поймать его правильно:
Когда я его убрал, все заработало.
источник