Nginx: redirige la dirección IP al nombre de dominio


12

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 implemento esta configuración termino con uno Redirect loopo ambos enlaces.

¿Qué estoy haciendo mal?

Respuestas:


30

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 la listendirectiva del segundo bloque del servidor es más específica que el primer bloque del servidor, por lo tanto, siempre se usa. Y dado que el segundo bloque es el único host virtual para esa listenespecificación, siempre se usa.


Eso tiene sentido. Pero cuando aplico esto, nginx: [emerg] could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32aparece el siguiente error: :( 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 agradecimiento muy cálido :)
— Matthieu Napoli

eres F ***** hombre correcto, resolvió un problema mío, voté, gracias
— a_m_dev

3

Estabas cerca Es reescribir lo que estás buscando.

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

55
Esto rewritey returnarriba hacen exactamente lo mismo.
— Tero Kilkanen
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.