Обратный прокси-сервер Nginx потерял соединение с контейнером PHP после обновления

У меня есть два контейнера внутри стека Rancher . Один из них - это контейнер php-fpm , который обслуживает приложение. Второй - Nginx, действующий как обратный прокси.

Nginx имеет следующие установленные конфигурации:

/etc/nginx/nginx.conf

user nginx;
worker_processes 4;
pid /var/run/nginx.pid;

events {
  worker_connections  2048;
}

http {
  server_tokens off;
  sendfile on;
  tcp_nopush on;
  tcp_nodelay on;
  keepalive_timeout 15;
  types_hash_max_size 2048;
  include /etc/nginx/mime.types;
  default_type application/octet-stream;
  include /etc/nginx/conf.d/*.conf;
  open_file_cache max=100;
}

/etc/nginx/conf.d/default. conf

server {
    ...
    location ~ ^/(app|app_dev|config)\.php(/|$) {
        fastcgi_param HTTP_PROXY "";
        fastcgi_pass php:9000;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param HTTPS off;
    }
}

Все работает нормально, пока не будет обновлен контейнер php . С этого момента обратный прокси возвращает 502 Bad Gateway . Следующее сообщение регистрируется в журнале ошибок:

*5 connect() failed (113: Host is unreachable) while connecting to upstream,
client: 10.42.154.177, server: [hidden url],
request: "GET / HTTP/1.1", upstream: "fastcgi://10.42.241.63:9000",
host: "[hidden-url]"

Таким образом, вместо использования имени хоста nginx напрямую использует IP-адрес, который, очевидно, изменяется во время обновления контейнера. Как заставить эту работу работать всегда?

Я мог бы создать проверки работоспособности, чтобы контейнер nginx создавался заново, однако мои журналы ошибок переполняются сообщениями.

0
задан 26 January 2018 в 20:36
1 ответ

Как оказалось, только версия plus имеет функции для разрешения IP-адреса восходящего потока через DNS-сервер .

Я закончил создание пустого файла php с именем healthcheck .php , который используется Rancher для регулярных проверок работоспособности. Если контейнер php отвечает HTTP-кодом, отличным от 200/300, контейнер nginx создается заново. Я также могу исключить этот файл из журнала доступа в конфигурации nginx.

Думаю, это должно быть сделано.

0
ответ дан 24 November 2019 в 03:14

Теги

Похожие вопросы