Hello! On Tue, Aug 11, 2015 at 11:38:07AM +0300, denis wrote:
> 10.08.2015 12:52, denis пишет: > >Добрый день > > > >как сделать такое: > >первый запрос - всегда на основной апстрим, при таймауте на него же через > >другой порт, и там неудача - на резерв. Последнее через backup, а как > >первые два сделать? Второму серверу weight=0? > можно ли сделать try_files @first @second @third =404? Можно, но оно будет делать не то, о чём вы подумали. Все аргументы try_files, кроме последнего - это файлы, существование которых будет проверяться на диске. Если нужно, чтобы в случае ошибок от бекенда обработка уходила в другой location, то следует пользоваться директивой error_page, см. http://nginx.org/r/error_page/ru. Там, в частности, есть пример такого вида: location / { error_page 404 = @fallback; } location @fallback { proxy_pass http://backend; } Таким образом можно обеспечить произвольную многоуровневую обработку запроса. Чуть более сложный пример есть в описании модуля memcached, http://nginx.org/ru/docs/http/ngx_http_memcached_module.html: location / { set $memcached_key "$uri?$args"; memcached_pass host:11211; error_page 404 502 504 = @fallback; } location @fallback { proxy_pass http://backend; } В случае, если требуется более одного перенаправления, необходимо также разрешить множественные перенаправления с помощью директивы recursive_error_pages, см. http://nginx.org/r/recursive_error_pages/ru. Ну и не надо забывать, что явно описанная группа серверов сама по себе обеспечивает опрос нужного количества серверов в случае ошибок, см. http://nginx.org/r/proxy_next_upstream/ru. -- Maxim Dounin http://nginx.org/ _______________________________________________ nginx-ru mailing list [email protected] http://mailman.nginx.org/mailman/listinfo/nginx-ru
