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

Я пытаюсь заменить host-переменную в заголовке в 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

}

это dodn't работает хотя!

Править

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

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;

  }


}
1
задан 1 March 2016 в 21:10
2 ответа

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

0
ответ дан 4 December 2019 в 07:12

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

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

должно быть:

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

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

0
ответ дан 4 December 2019 в 07:12

Теги

Похожие вопросы