Я перенаправляюсь в какой-то домен на основе условия 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