Вопрос или проблема
Я получаю следующую ошибку – я делаю это на своем локальном компьютере с 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-адрес, к которому вы пытаетесь подключиться, недоступен на вашем локальном компьютере.
Несколько шагов, которые вы можете предпринять для устранения проблемы:
-
Проверьте IP-адреса: Убедитесь, что IP-адреса 10.101.121.15 и 10.111.121.13 правильно настроены на вашем локальном компьютере. Вы можете использовать команду ifconfig или ip addr, чтобы перечислить все доступные IP-адреса.
-
Измените конфигурацию 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;
…
}
-
Проверьте наличие конфликтов: Убедитесь, что другие службы не используют порт 443 на указанных IP-адресах. Вы можете проверить это, выполнив команду sudo lsof -i :443 или netstat -tuln | grep :443.
-
Перезапустите Docker и Nginx: Иногда простая перезагрузка Docker и Nginx может решить проблемы с привязкой. Вы можете перезапустить Docker Desktop, а затем перезапустить Nginx с помощью следующих команд:
sudo systemctl restart nginx
- Проверьте конфигурацию сети Docker: Убедитесь, что сетевые настройки Docker правильно настроены для разрешения привязки к указанным IP-адресам. Вам может понадобиться проверить настройки сети Docker или создать пользовательскую сеть.
Ответ или решение
Проблема, с которой вы столкнулись, связана с тем, что Nginx пытается привязаться к определённым IP-адресам (10.101.121.15 и 10.111.121.13) на порту 443, но эти IP-адреса недоступны на вашей локальной машине. Вот пошаговое руководство, как можно устранить эту проблему:
-
Проверьте доступные IP-адреса: Убедитесь, что указанные IP-адреса действительно настроены на вашем компьютере. Используйте команду
ifconfig
илиip addr
, чтобы отобразить список всех доступных IP-адресов и посмотреть, доступны ли нужные вам адреса. -
Измените конфигурацию 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
- Откройте файл конфигурации Nginx, который обычно находится в
-
Проверьте наличие конфликтов: Убедитесь, что другие службы не используют порт 443 на указанных IP-адресах. Это можно проверить с помощью команды:
sudo lsof -i :443
или
netstat -tuln | grep :443
-
Перезапустите Docker и Nginx: Иногда достаточно просто перезапустить Docker и Nginx для устранения проблем с привязкой. Вы можете перезапустить Docker Desktop, а затем выполнить следующие команды для перезапуска Nginx:
sudo systemctl restart nginx
-
Проверьте конфигурацию сети Docker: Убедитесь, что настройки сети Docker правильно настроены и позволяют привязку к указанным IP-адресам. Для этого вы можете просмотреть настройки сети Docker:
docker network ls
-
Добавьте IP-адреса в Docker: Если у вас статическая настройка IP-адресов в Docker, убедитесь, что эти адреса настроены правильно. Вы можете создать пользовательскую сеть Docker с определёнными настройками, если это необходимо.
После выполнения всех этих шагов ваша проблема с ошибкой "Cannot assign requested address" должна быть решена. Если ошибка продолжает возникать, проверьте логи Nginx для получения дополнительной информации о возникшей проблеме:
sudo tail -f /var/log/nginx/error.log
Надеюсь, это поможет вам справиться с проблемой. Если возникнут дополнительные вопросы, пожалуйста, не стесняйтесь задавать их!