Pregunta Nginx: Redirecciona la dirección IP al nombre de dominio


Con la siguiente configuración de 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;
}

Estoy tratando de redirigir http://178.62.136.230/ a http://isitmaintained.com/ pero cuando despliegue esta configuración termino con una Redirect loop o ambos de esos enlaces.

¿Qué estoy haciendo mal?


6
2017-09-16 23:41


origen




Respuestas:


Prueba esto en el segundo bloque:

server {
    listen 80;
    server_name 178.62.136.230;

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

El problema es que el segundo bloque de servidor. listen La directiva es más específica que el primer bloque de servidor, por lo tanto, siempre se utiliza. Y ya que el segundo bloque es el único host virtual para eso listen Especificación, siempre se utiliza.


18
2017-09-17 10:16



Eso tiene sentido. Pero cuando aplico esto, me sale el siguiente error: nginx: [emerg] could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32 :( Y eso no tiene sentido porque mi nombre de dominio no es tan largo. - Matthieu Napoli
Bueno, por alguna razón, su configuración requiere más espacio de almacenamiento para los nombres del servidor host virtual en nginx, por lo que solo debe aumentar la configuración. - Tero Kilkanen
Mis disculpas por no intentarlo directamente, estaba seguro de que había algo mal. Pero tenías razón, ¡la redirección funciona ahora! Un muy caluroso gracias :) - Matthieu Napoli


Estabas cerca Es reescribir lo que buscas.

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.
}

3
2017-09-17 08:41



Esta rewrite y return Lo anterior hace exactamente lo mismo. - Tero Kilkanen