Назад | Перейти на главную страницу

как перенаправить по запрошенной схеме (http или https)

Я перенаправляюсь в какой-то домен на основе условия acl, но я хочу, чтобы пользователь попал либо в http или https в зависимости от схемы / протокола их запроса. Мне удалось сделать это с двумя показанными ниже строками, но я хотел бы преобразовать их всего в одну строку:

http-request redirect code 301 location http://www.example.com%[url] if acl_whatever !{ ssl_fc }
http-request redirect code 301 location https://www.example.com%[url] if acl_whatever { ssl_fc }

В идеале я бы хотел перенаправить на что-то вроде %[scheme]://www.example.com%[url] но %[scheme] не существует.

Есть ли переменная или функция, которая может возвращать http или https чтобы мне не пришлось повторять правило дважды? Возможно, каким-то образом установив переменную, содержащую схему, или, возможно, используя значение %[ssl_fc] что 0 или 1?

Вы можете сделать это, используя http-request set-var и %[var(name)]:

http-request set-var(req.scheme) str(https) if { ssl_fc }
http-request set-var(req.scheme) str(http) if ! { ssl_fc }
http-request redirect code 301 location %[var(req.scheme)]://www.example.com%[url] if acl_whatever