nginx force reescreva o endereço completo

1

Na intranet da minha empresa, os sites podem ser acessados de duas maneiras. Com seu alias, como https://foo ou com o endereço completo, algo como https://foo.example.internal .

Eu quero configurar o meu servidor nginx para forçar o usuário a usar a segunda opção. Então, se eles procurarem https://foo , eu quero que o servidor nginx reescreva o endereço para https://foo.example.internal .

Eu tentei várias opções:

http {
  server {
    server_name foo;

    # Test 1
    rewrite ^https://foo/(.*)$ https://foo.example.internal/$1;

    # Test 2
    rewrite ^/foo/(.*)$ https://foo.example.internal/$1;

    # Test 3
    rewrite ^/(.*) https://foo.example.internal/$1;
  }
}

Test1 e Test2 não têm efeito (ou seja, o usuário pode acessar o website em https://foo ou https://foo.example.internal ), enquanto Test3 faz a reescrita de https://foo a https://foo.example.internal , mas o mais recente não não funciona (nada é retornado pelo servidor nginx, eu suspeito que haja algum loop nessa reescrita de URL).

Então, como posso forçar o nginx a reescrever https://foo para https://foo.example.internal ?

Obrigado

    
por Romain Linsolas 30.04.2018 / 09:56

1 resposta

1

Finalmente encontrei o problema. A solução de trabalho é feita configurando 2 servidores:

http {

  server {
    server_name foo;
    listen 443 ssl;

    return 301 https://foo.example.internal$request_uri;
  }

  server {
    server_name foo.example.internal;
    listen 443 ssl;

    # rest of configuration
  }


}
    
por 30.04.2018 / 11:10

Tags