Como se / outra instrução com nginx conf?


9

é 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;
}

Você pode dar uma olhada no módulo de mapa .
gf_

2
Você escreveu algo estranho e sem sentido. Tente começar do começo, que problema você quer resolver
Alexey Dez 26/06

Respostas:


9

O módulo de reescrita do Nginx possui ifdiretiva (consulte a documentação vinculada para exemplos), mas não else. O equivalente a elseseria tudo o que não é modificado com umif .

Você pode usar ifdentro de um, server { }mas não o contrário. Você nem teria a condição comparada no seu if antes de uma solicitação que já precisa do servidor. Lá, você só pode veicular conteúdo quando o agente do usuário é (ou não é) wget.

Observe também que você não deve usar ifdentro location, pois pode não funcionar como desejado (consulte Se é mau ).


3

No formulário fornecido, não funcionará: testar o Agente do Usuário HTTP implica que a solicitação já foi recebida. Isso só é possível se algum serverbloco já estiver definido. Deseja realmente iniciar novos servidores, dependendo da cadeia de agente do usuário de uma solicitação que você recebeu em outro lugar?

Se você deseja apenas exibir conteúdo diferente, redirecione para caminhos diferentes, etc., dependendo de partes da solicitação como o User-Agent, isso é possível, por exemplo, com http://nginx.org/en/docs/http/ngx_http_rewrite_module. html

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.