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.