nginx remove if instruções

1

Estou procurando um pequeno conselho aqui para um noob nginx. Eu tenho lido que se declarações são muito lentas no nginx, então eu estava esperando por uma pequena ajuda na conversão destes. Eu tentei um monte de métodos diferentes, todos os fracassos, então eu pensei em fazer uma pergunta.

server_name *.noconformity.co noconformity.co;
# remove all sub domains and www
if ($http_host !~* "^(ftp|ssh)\.noconformity\.co$"){
    set $rule_0 1$rule_0;
}
if ($http_host ~ "^([^.]+)\.noconformity\.co$"){
    set $rule_0 2$rule_0;
}
if ($rule_0 = "21"){
    rewrite ^/(.*)$ http://noconformity.co/$1 permanent;
    break;
}
# Login Short Cut
if ($uri ~* "/login") {
    rewrite ^/login(/.*)? /wp-admin$1;
}
    
por Chris Hough 24.11.2011 / 05:41

2 respostas

1

Completamente não testado - muito provável que tenha erros - mas esperamos que o conceito seja válido.

A configuração abaixo é baseada no que eu interpreto seu objetivo: redirecionar todos os subdomínios, exceto 'ftp' e 'ssh' para o site principal; Redirecionamento / login para / wp-admin

Crie um bloco de servidor para aceitar conexões aos subdomínios ftp e ssh - e então faça algo aqui (como negar ou retornar 403, etc) - já que é um static server_name, ele tem precedência sobre o curinga server_name.

server {
    server_name ftp.noconformity.co ssh.noconformity.co;
    #additional options
}

Seu bloco de servidores principal - adicione sua reescrita a um bloco de localização

server{
    server_name noconformity.co;
    #root ....; 
    #your main config

    location ~* /login/ {
        rewrite ^/login/(.*)? /wp-admin$1;
    }
}

{Eu tive que mudar o / login / reescrever para evitar ficar preso em um loop com o login do WP integrado no redirect}

Por fim, um nome_do_servidor curinga - isso corresponderá a qualquer subdomínio (exceto aqueles já correspondidos) capturar o caminho e regravar para o site principal.

server {
    server_name *.noconformity.co;
    rewrite ^/(.*)$ http://noconformity.co/$1 permanent;
}

A nginx página em server_names vale a pena ser lida, pois explica a prioridade de diferentes expressões server_name.

    
por 24.11.2011 / 06:42
0

A melhor resposta para essa pergunta é usar o Módulo HTTP Map . Seu exemplo acima é quase o mesmo caso que o que eles demonstraram. Muito mais limpo e mais fácil de gerenciar.

    
por 12.06.2012 / 21:54