Nginx в Ubuntu выдает ошибку «адрес уже используется»
Я пытаюсь настроить свой VPS (Ubuntu на DigitalOcean) для запуска приложений Meteor, но рано сталкиваюсь с проблемой при работе с конфигурацией Nginx. Когда я пытаюсь перезапустить Nginx, чтобы он загрузил новый файл.conf для доменного имени, он показывает эту ошибку:
[emerg] 3597 # 0: ошибка bind() до 0.0.0.0:80 (98: адрес уже используется)
Это повторяется 5 раз в логах и заканчивается:
[emerg] 3597 # 0: до сих пор не удалось связать ()
Вот дамп основной конфигурации Nginx (/etc/nginx/nginx.conf):
user www-data; worker_processes 4; pid /run/nginx.pid; events < worker_connections 768; # multi_accept on; >http < ## # Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; # server_tokens off; server_names_hash_bucket_size 64; # server_name_in_redirect off; include /etc/nginx/mime.types; default_type application/octet-stream; ## # Logging Settings ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; # Gzip Settings ## gzip on; gzip_disable "msie6"; # gzip_vary on; # gzip_proxied any; # gzip_comp_level 6; # gzip_buffers 16 8k; # gzip_http_version 1.1; # gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml $ ## # nginx-naxsi config ## # Uncomment it if you installed nginx-naxsi ## #include /etc/nginx/naxsi_core.rules; ## # nginx-passenger config ## # Uncomment it if you installed nginx-passenger ## #passenger_root /usr; #passenger_ruby /usr/bin/ruby; ## # Virtual Host Configs ## include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; >
У меня нет ничего в каталогах с доступными сайтами или с включенными сайтами (включая сайт по умолчанию), потому что я понимаю, что Meteor (через Node) будет обслуживать приложение, поэтому все, что нам нужно от Nginx, — это обработка виртуальных хостов., Мое приложение называется Loyr, поэтому я создал /etc/nginx/conf.d/loyr.conf:
После того как я записал этот файл в каталог conf.d, я использовал перезапуск службы nginx, чтобы он перезагрузил файлы конфигурации, но он просто говорит «[fail]. В журнале ошибок nginx (/var/log/nginx/error.log»)), эти строки напечатаны:
2015/04/08 15:43:02 [emerg] 4103 # 0: сбой привязки () к 0.0.0.0:80 (98: адрес уже используется) 2015/04/08 15:43:02 [emerg] 4103# От 0: ошибка bind() до 0.0.0.0:80 (98: адрес уже используется) 2015/04/08 15:43:02 [emerg] 4103#0: ошибка bind() до 0.0.0.0:80 (98: Адрес уже используется) 2015/04/08 15:43:02 [emerg] 4103#0: сбой привязки () к 0.0.0.0:80 (98: Адрес уже используется) 2015/04/08 15:43:02 [emerg] 4103#0: не удалось выполнить привязку () к 0.0.0.0:80 (98: адрес уже используется) 2015/04/08 15:43:02 [emerg] 4103#0: все еще не удалось выполнить привязку ()
Я был бы очень признателен за любую информацию, которую вы могли бы дать мне по этому вопросу.
DHCP выдает уже использующийся адрес (который прописан статикой)
Доброго времени суток, уважаемые. есть проблемка над которой долбусь уже около недели, может вы что нить умное подскажете и так поехали:
есть сеть в которой ПРОВАЙДЕРСКИЙ dhcp раздает внешние ip адреса (БЕЗ КАКИХ БЫ ТО НИБЫЛО ПРИВЯЗОК т.е. ), есть комп на котором довольно долго уже ip прописан статикой, теперь появилась необходимость на этот комп поставить линукс вкатал fedora (RFRemix 16), почему именно ее, а не что нить другое это отдельная тема и к данной не имеет особого отношения.поставил начал настраивать и наткнулся на пролему: ip я прописал статически как и на второй системе (к слову там вин7), спустя некоторое время сеть отвалилась. выяснил что падения сети связаны с тем что dhcp не видит прописаного статикой ip и выдает его другой машине (выдало соседней машине потому и увидел), при этом если загрузить вин 7 то все норм, как я уже говорил там так же забита статика. ip не выдается другим компам и все отлично работает.
вот и вопрос собственно, как научить линух говорить dhcp что адрес уже занят и нечего его трогать. напомню dhcp провайдерский доступа к нему нет, а потому варианты его перенастроить и т.д. в сторону, это не то. кто знает подскажите что именно и где нужно подкурить в линухе, так что бы все работало.
texnik_vet
dhcp раздает внешние ip адреса (
Ты либо пропиваешь статический ip и маску, либо получаешь по dhcp что-то одно другого не дано.
с глазками проблема ? тогда вам не сюда а к окулисту.
что больше смущает что возможно в настройках сетевой карты использовать как статический адрес так и динамический? или что пул внешних ипов ? — бывает особенно если весь пул выдается для одной компании и все ипы зарезервированы на нее.
hira_saka, походу мы на разных языках, ip, маска, шлюзы и даже днс прописаны в ручную. проблема немного не в том.
есть сеть в которой ПРОВАЙДЕРСКИЙ dhcp раздает внешние ip адреса (БЕЗ КАКИХ БЫ ТО НИБЫЛО ПРИВЯЗОК т.е. ), есть комп на котором довольно долго уже ip прописан статикой
Такое можно делать только, если статически прописанный IP не входит в диапазон адресов, выдаваемых DHCP-сервером. Иначе оно нормально работать вообще не обязано.
теперь появилась необходимость на этот комп поставить линукс вкатал fedora (RFRemix 16), почему именно ее, а не что нить другое это отдельная тема и к данной не имеет особого отношения.поставил начал настраивать и наткнулся на пролему: ip я прописал статически как и на второй системе (к слову там вин7), спустя некоторое время сеть отвалилась. выяснил что падения сети связаны с тем что dhcp не видит прописаного статикой ip и выдает его другой машине (выдало соседней машине потому и увидел), при этом если загрузить вин 7 то все норм, как я уже говорил там так же забита статика. ip не выдается другим компам и все отлично работает.
DHCP-сервер не обладает телепатией и в общем случае не может узнать о наличии статически прописанных адресов. DHCP-сервера *могут* (например ISC DHCPd) перед выдачей IP-адресов отправлять ICMP Echo на адреса, чтобы на всякий случай проверить их незанятость. Но это не обязательно.
вот и вопрос собственно, как научить линух говорить dhcp что адрес уже занят и нечего его трогать.
- Вариант правильный: отказаться от статического адреса и получать его динамически.
- Ещё один правильный вариант: получить от провайдера гарантированно свободный IP-адрес; или попросить их прописать у себя на сервере существующий статический IP-адрес как занятый.
- Вариант костыльный и вообще нехороший: попробовать разрешить линуксу отвечать на ping’и (если сейчас в файрволле это запрещено). Но не факт, что это поможет.
И кстати провайдеры за такую самодеятельность могут и договор разорвать. Так как это создаёт проблемы в их сети.
как научить линух говорить dhcp что адрес уже занят и нечего его трогать. напомню dhcp провайдерский доступа к нему нет
DNS сервер что-ль перезаписывается в resolv.conf?
уже ближе к делу.
mironov_ivan,
Такое можно делать только, если статически прописанный IP не входит в диапазон адресов, выдаваемых DHCP-сервером. Иначе оно нормально работать вообще не обязано.
вообще не обязано ? Вы серьезно ? а почему тогда пока комп под виндой такие проблемы не возникают?
DHCP-сервер не обладает телепатией и в общем случае не может узнать о наличии статически прописанных адресов. DHCP-сервера *могут* (например ISC DHCPd) перед выдачей IP-адресов отправлять ICMP Echo на адреса, чтобы на всякий случай проверить их незанятость. Но это не обязательно.
Вначале клиент выполняет широковещательный запрос по всей физической сети с целью обнаружить доступные DHCP-серверы. Он отправляет сообщение типа DHCPDISCOVER, при этом в качестве IP-адреса источника указывается 0.0.0.0 (так как компьютер ещё не имеет собственного IP-адреса), а в качестве адреса назначения — широковещательный адрес 255.255.255.255.
Клиент заполняет несколько полей сообщения начальными значениями:
В поле xid помещается уникальный идентификатор транзакции, который позволяет отличать данный процесс получения IP-адреса от других, протекающих в то же время.
В поле chaddr помещается аппаратный адрес (MAC-адрес) клиента.
В поле опций указывается последний известный клиенту IP-адрес. В данном примере это 192.168.1.100. Это необязательно и может быть проигнорировано сервером.
Сообщение DHCPDISCOVER может быть распространено за пределы локальной физической сети при помощи специально настроенных агентов ретрансляции DHCP, перенаправляющих поступающие от клиентов сообщения DHCP серверам в других подсетях.
Предложение DHCP
Получив сообщение от клиента, сервер определяет требуемую конфигурацию клиента в соответствии с указанными сетевым администратором настройками. В данном случае DHCP-сервер согласен с запрошенным клиентом адресом 192.168.1.100. Сервер отправляет ему ответ (DHCPOFFER), в котором предлагает конфигурацию. Предлагаемый клиенту IP-адрес указывается в поле yiaddr. Прочие параметры (такие, как адреса маршрутизаторов и DNS-серверов) указываются в виде опций в соответствующем поле.
Это сообщение DHCP-сервер отправляет хосту, пославшему DHCPDISCOVER, на его MAC, при определенных обстоятельствах сообщение может распространяться как широковещательная рассылка. Клиент может получить несколько различных предложений DHCP от разных серверов; из них он должен выбрать то, которое его «устраивает».
Запрос DHCP
Выбрав одну из конфигураций, предложенных DHCP-серверами, клиент отправляет запрос DHCP (DHCPREQUEST). Он рассылается широковещательно; при этом к опциям, указанным клиентом в сообщении DHCPDISCOVER, добавляется специальная опция — идентификатор сервера — указывающая адрес DHCP-сервера, выбранного клиентом (в данном случае — 192.168.1.1).
Подтверждение DHCP
Наконец, сервер подтверждает запрос и направляет это подтверждение (DHCPACK) клиенту. После этого клиент должен настроить свой сетевой интерфейс, используя предоставленные опции.
Если после получения подтверждения (DHCPACK) от сервера клиент обнаруживает, что указанный сервером адрес уже используется в сети, он рассылает широковещательное сообщение отказа DHCP (DHCPDECLINE), после чего процедура получения IP-адреса повторяется.
Вариант правильный: отказаться от статического адреса и получать его динамически.
возможно правильный но в край не подходящий, на этот ип уже зареган домен.да и проще решить проблему чем искать как «правильнее от нее уйти».
Ещё один правильный вариант: получить от провайдера гарантированно свободный IP-адрес; или попросить их прописать у себя на сервере существующий статический IP-адрес как занятый.
не подходящий вариант, провайдер говорит что «у нас проблем нет а ваши решайте сами»
Вариант костыльный и вообще нехороший: попробовать разрешить линуксу отвечать на ping’и (если сейчас в файрволле это запрещено). Но не факт, что это поможет.
это уже ближе к делу. вот только на пинги линух отвечает, связь с ним есть. что нужно открыть что бы пропали конфликты. (в винде их нету ведь и все зашибись работает!!) и чем же он не хороший? тем что система станет видна в сети ? и что ?
И кстати провайдеры за такую самодеятельность могут и договор разорвать. Так как это создаёт проблемы в их сети.
не разорвут по очень многим причинам, да и какие проблемы в их сети? конфликт ипов в нутри сети предприятия которому они дают инет ? и давайте к теме топика вернемся. отношения с провайдером и т.д. это не в тему
вообще не обязано ? Вы серьезно ?
а почему тогда пока комп под виндой такие проблемы не возникают?
Везение? Разница в настройках? Без понятия.
Клиенты, у которых IP-адрес прописан статически, *вообще* не обращаются к DHCP-серверу. Смысл копипасты из wiki в данном контексте не понятен.
Ещё раз повторю: DHCP-сервер в общем случае ничего не знает про «статических» клиентов. И знать он про них не обязан.
да и проще решить проблему чем искать как «правильнее от нее уйти».
Я и предлагаю её решить. Не городить заведомо нерабочие костыли на тему «как нам обмануть провайдерский DHCP-сервер», а нормально и капитально решить.
Вот например, что будет, если пока твой компьютер выключен, кто-то в сети провайдера успеет занять его IP-адрес? У нас провайдеры за создание проблем другим пользователям просто отключают от сети.
не разорвут по очень многим причинам, да и какие проблемы в их сети? конфликт ипов в нутри сети предприятия которому они дают инет ? и давайте к теме топика вернемся. отношения с провайдером и т.д. это не в тему
Расскажи подробнее как организована эта сеть.