Como se a declaração if com o nginx conf?

5

é possível fazer algo assim com o nginx?

if ( $http_user_agent = "wget" ){
   server {
      listen      11.11.11.11:1111;
      root        /website1/;
      server_name example.com www.example.com;
else 

   server {
      listen      22.22.22.22:22222;
      root        /website2/;
      server_name example2.com www.example2.com;
}
    
por user421936 25.06.2017 / 20:36

2 respostas

5

O módulo de regravação Nginx tem if directive (consulte a documentação vinculada para exemplos ), mas não else . O equivalente para else seria tudo que não foi modificado com if .

Você pode usar if dentro de um server { } , mas não o contrário. Você nem sequer teria a condição comparada em seu se antes de um pedido que já precisa do servidor. Lá, você só poderia exibir conteúdo quando o agente do usuário fosse (ou não) wget .

Observe também que você não deve usar if dentro de location , pois pode não funcionar como desejado (veja Se é mal ).

    
por 25.06.2017 / 21:52
3

No formulário dado, ele não funcionará: testar o HTTP User-Agent implica que o pedido já foi recebido. Isso só é possível se algum bloco server já estiver definido. Você realmente deseja iniciar novos servidores dependendo da cadeia User-Agent de uma solicitação recebida em outro lugar?

Se você quiser apenas exibir conteúdo diferente, redirecione para diferentes caminhos, etc., dependendo de partes da solicitação, como o User-Agent, isso é possível, por exemplo, com o link

    
por 25.06.2017 / 20:53