Невозможно назначить запрашиваемый адрес nginx с помощью Docker на локальном компьютере

Вопрос или проблема

Я получаю следующую ошибку – я делаю это на своем локальном компьютере с Docker Desktop – к вашему сведению

web-1 | 2024/10/08 01:08:24 [emerg] 12#12: bind() к 10.101.121.15:443 не удался (99: Невозможно назначить запрашиваемый адрес) web-1 | nginx: [emerg] bind() к 10.111.121.13:443 не удался (99: Невозможно назначить запрашиваемый адрес)

http {

      upstream backend {
          server cluster_1.ingress.com:443;
          server cluster_2.ingress.com:443; max_fails=2 fail_timeout=1s;
      }

      server {
            listen cluster_1.ingress.com:443;
            location / {
         resolver dns-default.openshift-dns;
         proxy_pass https://backend;

                   proxy_pass_request_headers on;
                   proxy_ssl_server_name on;
                   proxy_ssl_name cluster_1.ingress.com;
                   proxy_set_header Host cluster_1.ingress.com;
            }
      }

         server {
                  listen cluster_2.ingress.com;
                  location / {
                       resolver dns-default.openshift-dns;
                      proxy_pass "https://cluster_2.ingress.com";        
                   proxy_pass_request_headers on;
                   proxy_ssl_server_name on;
                   proxy_ssl_name cluster_2.ingress.com;
                   proxy_set_header Host cluster_2.ingress.com;
                  }
            }

    server {
         listen 8080 default_server;
         listen [::]:8080 default_server;
         root /usr/share/nginx/html;
         server_name _;

         add_header Access-Control-Allow-Origin * always;
         add_header Access-Control-Allow-Credentials true;
         add_header Access-Control-Allow-Headers Authorization,Accept,Origin,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Content-Range,Range;
         add_header Access-Control-Allow-Methods GET,POST,OPTIONS,PUT,DELETE,PATCH;

         location / {
                   resolver dns-default.openshift-dns;
         proxy_pass $backend;
         }

  }
}

Проблема связана с Nginx, как видно выше, пытающимся привязаться к определенным IP-адресам на порту 443. Эта ошибка обычно возникает, когда IP-адрес, к которому вы пытаетесь подключиться, недоступен на вашем локальном компьютере.

Несколько шагов, которые вы можете предпринять для устранения проблемы:

  1. Проверьте IP-адреса: Убедитесь, что IP-адреса 10.101.121.15 и 10.111.121.13 правильно настроены на вашем локальном компьютере. Вы можете использовать команду ifconfig или ip addr, чтобы перечислить все доступные IP-адреса.

  2. Измените конфигурацию Nginx: Если эти IP-адреса недоступны, вам, возможно, придется обновить файл конфигурации Nginx, чтобы использовать доступный IP-адрес или 0.0.0.0, чтобы привязаться ко всем доступным интерфейсам. Файл конфигурации обычно находится по адресу

/etc/nginx/nginx.conf или /etc/nginx/sites-available/default.
server {
listen 443 ssl;
server_name your_domain.com;

}

  1. Проверьте наличие конфликтов: Убедитесь, что другие службы не используют порт 443 на указанных IP-адресах. Вы можете проверить это, выполнив команду sudo lsof -i :443 или netstat -tuln | grep :443.

  2. Перезапустите Docker и Nginx: Иногда простая перезагрузка Docker и Nginx может решить проблемы с привязкой. Вы можете перезапустить Docker Desktop, а затем перезапустить Nginx с помощью следующих команд:

sudo systemctl restart nginx

  1. Проверьте конфигурацию сети Docker: Убедитесь, что сетевые настройки Docker правильно настроены для разрешения привязки к указанным IP-адресам. Вам может понадобиться проверить настройки сети Docker или создать пользовательскую сеть.

Ответ или решение

Проблема, с которой вы столкнулись, связана с тем, что Nginx пытается привязаться к определённым IP-адресам (10.101.121.15 и 10.111.121.13) на порту 443, но эти IP-адреса недоступны на вашей локальной машине. Вот пошаговое руководство, как можно устранить эту проблему:

  1. Проверьте доступные IP-адреса: Убедитесь, что указанные IP-адреса действительно настроены на вашем компьютере. Используйте команду ifconfig или ip addr, чтобы отобразить список всех доступных IP-адресов и посмотреть, доступны ли нужные вам адреса.

  2. Измените конфигурацию Nginx: Если указанные IP-адреса недоступны, обновите файл конфигурации Nginx, чтобы использовать имеющийся IP-адрес или 0.0.0.0, чтобы привязаться ко всем доступным интерфейсам. Например, исправьте конфигурацию следующим образом:

    server {
       listen 443 ssl;
       server_name cluster_1.ingress.com; # используйте ваш домен или IP-адрес
       ...
    }

    Шаги для редактирования конфигурации:

    • Откройте файл конфигурации Nginx, который обычно находится в /etc/nginx/nginx.conf или /etc/nginx/sites-available/default:
      sudo nano /etc/nginx/nginx.conf
  3. Проверьте наличие конфликтов: Убедитесь, что другие службы не используют порт 443 на указанных IP-адресах. Это можно проверить с помощью команды:

    sudo lsof -i :443

    или

    netstat -tuln | grep :443
  4. Перезапустите Docker и Nginx: Иногда достаточно просто перезапустить Docker и Nginx для устранения проблем с привязкой. Вы можете перезапустить Docker Desktop, а затем выполнить следующие команды для перезапуска Nginx:

    sudo systemctl restart nginx
  5. Проверьте конфигурацию сети Docker: Убедитесь, что настройки сети Docker правильно настроены и позволяют привязку к указанным IP-адресам. Для этого вы можете просмотреть настройки сети Docker:

    docker network ls
  6. Добавьте IP-адреса в Docker: Если у вас статическая настройка IP-адресов в Docker, убедитесь, что эти адреса настроены правильно. Вы можете создать пользовательскую сеть Docker с определёнными настройками, если это необходимо.

После выполнения всех этих шагов ваша проблема с ошибкой "Cannot assign requested address" должна быть решена. Если ошибка продолжает возникать, проверьте логи Nginx для получения дополнительной информации о возникшей проблеме:

sudo tail -f /var/log/nginx/error.log

Надеюсь, это поможет вам справиться с проблемой. Если возникнут дополнительные вопросы, пожалуйста, не стесняйтесь задавать их!

Оцените материал
Добавить комментарий

Капча загружается...