backend
— это один или несколько серверов (служб, конечных точек), которые могут обрабатывать один и тот же набор запросов. Вы определяете серверные части не на основе того, что к ним идет, а скорее исходя из того, что может к ним идти.
Например, если у вас есть набор серверов, которые могут обслуживать несколько видов статических ресурсов, вы не будете создавать серверную часть для javascript, еще одну для CSS, еще одну для изображений. Вы бы сделали один.
backend static-assets
mode http
server static-1 203.0.113.100:80
server static-2 203.0.113.200:80
Затем направьте соответствующие запросы на этот сервер.
Вы можете сделать это несколькими способами.
Анонимные ACL, по одному на шаблон:
frontend main
mode http
bind :80
use_backend static-assets if { path_end .js }
use_backend static-assets if { path_end .css }
use_backend static-assets if { path_end .png }
Анонимные ACL с явным ||
(логическое ИЛИ):
frontend main
mode http
bind :80
use_backend static-assets if { path_end .js } || { path_end .css } || { path_end .png }
Или используйте именованные ACL. Каждая строка в именованном ACL выполняется по схеме ИЛИ — для соответствия ACL должна совпадать только одна строка.
frontend main
mode http
bind :80
acl is_static path_end .js
acl is_static path_end .css
acl is_static path_end .png
use_backend static-assets if is_static
Или используйте любую их комбинацию.
Первая директива use_backend
для сопоставления — это серверная часть, на которую будет направлен запрос — они обрабатываются в определенном порядке. Не должно быть необходимости в «вложенности».
person
Michael - sqlbot
schedule
09.06.2017