Como substituir a variável do host em um cabeçalho no nginx

1

Estou tentando substituir a variável do host no cabeçalho na configuração nginx, de modo que some.random.sub.example.net se torne net-some.random.sub.example.com . Eu tentei o seguinte:

if ($host ~* "^([^.]+(\.[^.]+)*)\.example.net$"){

set $sub $1;

set $host1 "http://net-$sub.example.com";

break;

}

e, em seguida, na diretiva location, eu tenho:

location / {

proxy_set_header    HOST $host1;

some conf

}

Não funcionou!

EDITAR

configuração completa:

server {#http

  listen          80 default_server;

  server_name     *.example.com;

  large_client_header_buffers 4 16k;

  access_log /var/log/nginx/access.log;

  error_log /var/log/nginx/error.log;

  if ($host ~* "^([^.]+(\.[^.]+)*)\.example.net$"){

  set $sub $1;

  set $host1 http://cn-$sub.example.com;

  break;

}


  location / {



    proxy_pass          http://ghs.google.com;

    proxy_set_header    HOST $host1;

    proxy_set_header    X-Forwarded-Host $host;

    proxy_set_header    X-Forwarded-Server $host;

    proxy_set_header    X-Real-IP $remote_addr;

    proxy_set_header    X-Real-HOST  $host;

    proxy_set_header    Proxy-Hostname $scheme://$http_host;

    proxy_set_header    X-Forwarded-Proto https;

    proxy_pass_request_headers     on;

    proxy_redirect                off;

    proxy_intercept_errors        on;

    proxy_redirect                false;

  }


}
    
por Mohammad Aljamal 27.08.2015 / 10:21

2 respostas

0

Veja a diretiva http proto-in Host que você não passa http / https - somente o nome do servidor

    
por 30.08.2015 / 10:45
0

ok, depois de muitos experimentos, eu resolvi isso.

set $host1 http://cn-$sub.example.com;

deve ser:

set $host1 cn-$sub.example.com;

alguma explicação?

    
por 30.08.2015 / 10:43