запустите nginx несмотря на пропавших без вести в восходящем направлении

Мне нравится выполнять nginx как локальный прокси-сервер, служа устаревшим файлам кэша, если вышестоящий сервер недоступен.

Это работает хорошо, кроме локальной машины перезапущен, в то время как интернет-соединение дает сбой. В этом случае nginx не запустит вообще, говоря 'хост, не найденный в восходящем потоке....'.

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

Таким образом, как заставить nginx проигнорировать отказ соединения однажды на запуске?

5
задан 12 March 2015 в 13:13
2 ответа

Вы можете настроить восходящий сервер с опцией резервное копирование , тогда это нормально не сработает.

upstream cache {
    server 192.168.1.2:8080 fail_timeout=5s max_fails=3;
    server 127.0.0.1:82 backup;
}

location / {
    proxy_pass http://cache;
    proxy_next_upstream error http_502;
}

Убедитесь, что ваш первичный сервер кеширования вернется постоянная ошибка,так что отказ обнаруживается быстро.

3
ответ дан 3 December 2019 в 01:50

Хороший трюк (не только для развертываний докеров) упоминается на https://sandro-keil.de/blog/let-nginx-start-if-upstream-host-is -unavailable-or-down /

Слава Сандро Кейлу - просто для справки - в основном он определяет преобразователь с таймаутом и все вышестоящие серверы через переменные:

server {
    # this is the internal Docker DNS, cache only for 30s
    resolver 127.0.0.11 valid=30s;

    location ^~ /api/ {
        # other config entries omitted for breavity

        set $upstream api.awesome.com:9000;

        # nginx will now start if host is not reachable
        fastcgi_pass    $upstream; 
        fastcgi_index   index.php;
    }
}

Я использую это решение для локальной разработки (позволяет мне запускать только подмножество сервисов с одной конфигурацией nginx), а также на производстве.

1
ответ дан 9 February 2020 в 06:51

Теги

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