Verniz provavelmente faria isso. Tal como acontece com outras opções mencionadas aqui você precisa de algo como libra na frente dele para atuar como um terminador SSL. No entanto, uma vez feito, você pode configurar cada servidor real como um "backend" e, em seguida, adicionar algo como o seguinte na configuração:
## Define the back end servers. backend server01 { .host = "192.0.2.1"; .port = "80"; } backend server02 { .host = "192.0.2.2"; .port = "80"; } sub vcl_recv { if (req.url ~ "^/1[0-9][0-9]/"){ ## If the first part of the link is 100-199 use server01 set req.backend = server01; pipe; } else if (req.url ~ "^/2[0-9][0-9]/") { ## If the first part of the link is 200-299 use server02 set req.backend = server02; pipe; } else { ## If all else fails fall back to server01 set req.backend = server01; pipe; } }
Este é apenas um extrato das seções relevantes e provavelmente haverá mais requisitos na configuração. Por exemplo, você poderia adicionar o seguinte logo após sub vcl_recv {
para armazenar em cache todos os arquivos estáticos para que os servidores não sejam atingidos sempre para arquivos que não mudam.
if (req.request == "GET" && req.url ~ "\.(png|jpg|gif|css)$") { lookup;
Você pode até adicionar pequenos programas em C na configuração para falar com um serviço externo e decidir qual back-end usar.