Nginx: Redirecionar https: //www.domain.tld/target para https: //nocache.domain.tld/destination

1

Eu tenho uma configuração de servidor Cloudflare / Nginx (v1.8.0) / Apache com muito cache.

O objetivo é armazenar em cache o domínio principal, mas permitir o acesso a um site por meio de um subdomínio no qual todo o armazenamento em cache é ignorado.

Então, estou procurando uma maneira genérica de redirecionar " link " para " link "

Uma simples correspondência de local contra o request_uri é suficiente para a variante de domínio que não é www, mas se a solicitação vier pelo subdomínio www, como muitos sites farão, então ele redireciona para nocache.www.domain.tld, que não existe.

Eu tentei todos os tipos de maneiras diferentes para remover o 'www.' substring, mas nada parece funcionar.

EDITAR

Aqui está minha configuração do servidor Nginx que não funciona:

server {

  listen 80 default_server;

  server_name localhost;

  set $PROXY_DOMAIN_OR_IP $host;

  if ( $request ~* ".*(www\.)(.*)\/target" ) {
     set $host_without_www $2;
     return 302 $scheme://nocache.${host_without_www}\/destination;
  }
    
por Narayan 24.12.2016 / 14:01

2 respostas

0

Finalmente consegui funcionar da seguinte forma:

location ~* "/target" {
  if ( $host ~* "www\.(.*)" ) {
    return 302 https://nocache.$1/destination;
  }

  return 302 https://nocache.$host/destination;
}

Os 302 foram para testes e serão alterados para redirecionamentos permanentes.

Obrigado a todos que responderam.

    
por 26.12.2016 / 02:18
0

Aqui está um bloco de localização que você pode usar para o redirecionamento

server {
    server_name www.domain.tld;
    location /target {
        rewrite /target(.*)$ /destination$1 last;
        return 301 https://nocache.domain.tld$request_uri;   
    }
}
  • O server_name limita o redirecionamento para o www.domain.tld domain
  • A localização corresponde a todos os URIs que começam com / target
  • a diretiva de reconfiguração converte / destino em / destino e mantém tudo o que aparece depois
  • O retorno envia o redirecionamento para o outro domínio
  • você também pode fazer isso com o proxy pass se não quiser que o usuário seja redirecionado
por 24.12.2016 / 17:39