Примеры сценариев для изменения содержимого запросов
Примеры сценариев для изменения содержимого запросов
Примеры приведены в таблице.
Примеры сценариев для изменения содержимого запросов
| Сценарий | Описание |
|---|---|
if (client.http_req.host:find("abc") and client.remote_p:is_network("192.0.2.0/24")) then
client.http_req.header:field_set("XFF", client.remote_p.ip)
client.bs = "lb1"
client.action = "bs"
end
| Если имя хоста содержит текст «abc» и запрос пришел из сети 192.0.2.0/24, то добавить заголовок «XFF: <IP-адрес пользователя при подключении>», и перенаправить запрос на Сервер Балансировки «lb1». Результат: WEB -- 03<p>Method GET</p><p>URL on server: /</p><p>REQ Headers: </p>Host: abc.domain.ru User-Agent: curl/7.81.0 Accept: */* XFF: 192.0.2.5 |
function startswith(text, prefix)
return text:find(prefix, 1, true) == 1
end
if startswith(client.http_req.host, "abc") then
client.http_req.header:field_set("Remote-port", client.remote_p.port)
client.http_req.header:field_set("XFF", client.remote_p.ip)
client.bs = "lb1"
client.action = "bs"
end
| Если имя хоста начинается с «abc», то добавить заголовок «XFF: <IP-адрес пользователя при подключении>» и «Remote-port: <порт-источник на клиенте>», и перенаправить запрос на Сервер Балансировки «lb1» |
if client.http_req.path:find("abc") then
if client.http_req.header:field_count("X-Forwarded-For") > 0 then
xff, xffip = client.http_req.header:field_get("X-Forwarded-For")
client.http_req.header:field_set("X-Forwarded-For", xffip ..", "..client.remote_p.ip)
else
client.http_req.header:field_set("X-Forwarded-For", client.remote_p.ip)
end
client.bs = "lb1"
client.action = "bs"
end
| Если:
Перенаправить запрос на Сервер Балансировки «lb1» |
client.http_req.host = client.http_req.host:match("(.*).ru") .. ".local"
client.http_req.path = "/external" .. client.http_req.path
client.bs = "lb1"
client.action = "bs"
| Подменить домен «ru» на домен «local» (например, если запрос идет к app.domain.ru, то в сторону Реального Сервера должен прийти app.domain.local). В начале пути запроса добавить «/external» и перенаправить запрос на Сервер Балансировки «lb1» |