Chain locations

Den Ivanov div на justcommunication.ru
Чт Дек 26 07:49:22 UTC 2019


Имею задачу: искать запрошенный файл в N удаленных серверах по порядку. Если все сервера ответили 404 - проксировать на fallback сервер.

Если делаю вот так, то файл ищется только на server1 и server2, после чего выдает клиенту 404. Почему? Как это решить?

        location /data/ {
                proxy_pass              http://server1.s3.cloud.mts.ru/data/;
                proxy_buffering         on;
                proxy_buffers           64 4k;

                proxy_intercept_errors  on;
                error_page              404 = @proxy_to_level1;
        }
        location @proxy_to_level1 {
                proxy_pass              http://server2.s3.cloud.mts.ru;
                proxy_buffering         on;
                proxy_buffers           64 4k;

                proxy_intercept_errors  on;
                error_page              404 = @proxy_to_level2;
        }
        location @proxy_to_level2 {
                proxy_pass              http://server3.s3.cloud.mts.ru;
                proxy_buffering         on;
                proxy_buffers           64 4k;

                proxy_intercept_errors  on;
                error_page              404 = @proxy_to_fallback;
        }
        location @proxy_to_fallback {
                proxy_pass              http://xxxxxx.ru;
                proxy_buffering         on;
                proxy_buffers           64 4k;
        }


Подробная информация о списке рассылки nginx-ru