nginx - get parsed server_name

2

Eu criei hosts virtuais para meus sites e então eu criei um outro host virtual com server_name -> default_server para pegar todo o resto e mostrar uma página específica nesse caso (por exemplo, se alguém tentar acessar meu ip).

Também uso o phpmyadmin, roundcube e squirrelmail e queria redirecionar qualquer conexão para eles de http para https. E aqui está o problema:

Digamos que eu digite: http://44.44.44.44/phpmyadmin (suponha que 44.44.44.44 seja meu ip)

Porque eu defini server_name -> default_server

server {

    listen 80;

    server_name default_server;

    root /usr/share/nginx/www;
    index index.html index.htm;


    location /phpmyadmin {
            rewrite     ^   https://$server_name$request_uri? permanent;
    }

    [...]
}

O URL para o qual eu sou redirecionado não é https://44.44.44.44/phpmyadmin , mas https://default_server/phpmyadmin , o que obviamente não existe.

Então acabei apontando explicitamente para o meu ip:

location /phpmyadmin {
        rewrite     ^   https://44.44.44.44$request_uri? permanent;
}

Funciona assim, mas eu queria saber se existe uma maneira de fazer a mesma coisa usando uma variável que retorna o server_name analisado ou qualquer outra maneira / mais inteligente.

    
por Christos Baziotis 27.09.2013 / 17:42

1 resposta

1

Use $http_host em vez de $server_name .

            rewrite     ^   https://$http_host$request_uri? permanent;
    
por 27.09.2013 / 17:47