Nginx: redirecione o endereço IP para o nome de domínio

12

Com a seguinte configuração do Nginx:

server {
    listen 80;
    listen [::]:80 default_server ipv6only=on;

    server_name isitmaintained.com;

    ...
}

server {
    listen 178.62.136.230:80;
    server_name 178.62.136.230;

    add_header X-Frame-Options "SAMEORIGIN";

    return 301 $scheme://isitmaintained.com$request_uri;
}

Estou tentando redirecionar http://178.62.136.230/para http://isitmaintained.com/, mas quando implanto essa configuração, acabo com um Redirect loopou ambos os links.

O que estou fazendo de errado?

Matthieu Napoli
fonte

Respostas:

30

Tente isso no segundo bloco:

server {
    listen 80;
    server_name 178.62.136.230;

    return 301 $scheme://isitmaintained.com$request_uri;
}

O problema é que a segunda listendiretiva de bloco de servidor é mais específica que o primeiro bloco de servidor, portanto, é sempre usada. E como o segundo bloco é o único host virtual para essa listenespecificação, ele é sempre usado.

Tero Kilkanen
fonte
Isso faz sentido. Mas quando eu aplico isso, eu recebo o seguinte erro: nginx: [emerg] could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32:( E isso não faz sentido, porque o meu nome de domínio não é muito tempo.
Matthieu Napoli
Bem, por algum motivo sua configuração requer mais espaço de armazenamento para os nomes de servidores host virtuais no nginx, portanto, você deve apenas aumentar a configuração.
Tero Kilkanen
Minhas desculpas por não tentar diretamente, eu tinha certeza de que havia algo errado. Mas você estava certo, o redirecionamento funciona agora! Um muito quente obrigado :)
Matthieu Napoli
você é F ***** homem certo, resolveu um problema meu, upvoted, thnx
a_m_dev
3

Você estava perto. É reescrever o que você está procurando.

server {
    listen 178.62.136.230:80;
    server_name 178.62.136.230 isitmaintained.com;

    rewrite  ^/(.*)$  http://www.isitmaintained.com/$1 permanent;
}
server {
    listen 80;
    server_name www.isitmaintained.com;
    # Serve Stuff Here.
}
ticoombs
fonte
5
Isso rewritee returnacima fazem exatamente a mesma coisa.
Tero Kilkanen