Passe de proxy de subdomínio NGINX

1

Versão: nginx / 1.2.0 || (Eu sei os riscos, é para um servidor interno) Como eu configuraria um sistema onde 17.hostname.com seria colocado como proxy_pass http://192.168.56.17:80 (Onde 17 seria substituído por qualquer número antes do nome do host)

    
por user554005 12.05.2012 / 22:25

3 respostas

3

Edit: A expressão regular server_name e map directive são melhores que esta, que usa o evil if directive .

A variável $ host contém o nome do host que o cliente solicitou, embora você precise processar isso um pouco para apenas pegar a parte que você quer. Parece que a única maneira de conseguir isso é com o se e definir as diretivas do módulo Rewrite, por isso tente algo como isto:

server_name *.hostname.com;

if ($host ~* ^([0-9]+)\.hostname\.com$) {
    set $proxyhost 192.168.56.$1;
}

proxy_pass http://$proxyhost;
    
por 12.05.2012 / 22:47
5
server_name ~^(?<subnum>[0-9]+)\.hostname\.com$;

proxy_pass http://192.168.56.$subnum;

link

    
por 13.05.2012 / 16:34
5
map $host $backend {

    default 1;
    ~*^(?P<number>[0-9]+)\.hostname\.com$        $number;

    # FIXME: [0-9]+ must be replaced to regex with accurate check 1..254 range
    # for example [1-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-4] or similar

}

server {
    server_name *.hostname.com;

    location / {
        proxy_pass http://192.168.56.$backend:80;
    }

}

E lembre-se: Se é mal !!! ; -)

    
por 13.05.2012 / 20:39

Tags