Capture o subdomínio em uma variável de solicitação chamada req.rewrite_example
(que é um nome que acabei de inventar ... o req.
é necessário, o resto pode ser o que você quiser) ... faça isso capturando o valor do cabeçalho Host:
, convertendo-o para minúsculas e, em seguida, usando o conversor regsub()
para eliminar o .example.com
no final. Faça isso somente se o nome do host terminar com .example.com
- caso contrário, a variável será indefinida e os testes -m found
nas regras subseqüentes serão falsas e essas regras não serão disparadas (que é o que queremos, para qualquer outro nome de domínio pode ver).
http-request set-var(req.rewrite_example) req.hdr(host),lower,regsub(\.example\.com$,) if { hdr_end(host) -i .example.com }
Insira a variável capturada no início do caminho, se a variável estiver definida (o que deveria ser, se a primeira regra fosse uma correspondência).
http-request set-path /%[var(req.rewrite_example)]%[path] if { var(req.rewrite_example) -m found }
Substitua o cabeçalho Host:
pela string literal example.com
se a variável estiver definida.
http-request set-header Host example.com if { var(req.rewrite_example) -m found }
... envie um pedido ...
curl http://www.example.com/tacgnol.jpg
... e os seguintes cabeçalhos estão sendo enviados para o back-end:
GET /www/tacgnol.jpg HTTP/1.1
User-Agent: curl/7.35.0
Accept: */*
Host: example.com
Feito.