Назад | Перейти на главную страницу

Как заменить переменную хоста в заголовке в nginx

Я пытаюсь заменить переменную хоста в заголовке в конфигурации nginx, чтобы some.random.sub.example.net становится net-some.random.sub.example.com. я пробовал следующее:

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

set $sub $1;

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

break;

}

а затем в директиве местоположения у меня есть:

location / {

proxy_set_header    HOST $host1;

some conf

}

но это не сработало!

РЕДАКТИРОВАТЬ

полная конфигурация:

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;

  }


}

хорошо, после множества экспериментов я решил это.

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

должно быть :

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

какое-нибудь объяснение?

См. Http proto - в Host директива вы не передаете http / https - только имя сервера