Veja a diretiva http proto-in Host
que você não passa http / https - somente o nome do servidor
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;
}
}
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?
Tags nginx http-headers