Soy nuevo en el nginx configs y han pasado un montón de tiempo buscando en google hasta ahora. Estoy tratando de crear un muy básico archivo de configuración de nginx para ser utilizado en un «redirect» server.

Los usuarios estarán obligados a punto de desnudo dominios (example.com) por Un récord para mi redirigir la dirección IP del servidor, y el » www » registro por CNAME a otro servidor.

El propósito de redirigir el servidor, a continuación, realizar una redirección 301 de cualquier/comodín desnudo dominios a la ‘www’ versión del dominio, de modo que puede ser manejado adecuadamente por otros de mi servidor.

Pero también quiero coger cualquier mal configurado ‘www’ dominios que están apuntando a mi IP del servidor por Un récord, y simplemente dirigir a una página de error personalizada en el servidor de redireccionamiento con más instrucciones sobre cómo configurar su cuenta correctamente mi servicio.

He aquí lo que tengo. Funciona, pero ya que soy nuevo en la escritura configs me preguntaba si hay una mejor manera de manejar la redirección a la página de error personalizada en el primer bloque de servidor. TIA!

#redirect to error page if begins with 'www.'

server {
    listen 80;
    server_name ~^www.; #only matches if starts with 'www.'. Is this good enough?
    rewrite ^(.*)$ /404.html; #is this the correct way to direct to a custom error page?

    error_page 404 /404.html;

    location  = /404.html {
        root /usr/share/nginx/html;
       }
    }

#no match, so redirect to www.example.com

server {
    listen 80 default_server;
    rewrite ^(.*)$ $scheme://www.$host$1 permanent;
}
InformationsquelleAutor bryanus | 2014-04-16

1 Comentario

  1. 3

    Prefijo/sufijo de nombre de servidor de coincidencia es más rápido y más fácil que regexp.

    También, no hay ninguna razón para usar la reescritura. Desea volver 404, por lo tanto, hacer y nginx hará el resto. Por CIERTO, con la reescritura volverá 200 OK con el contenido de /404.html en lugar de 404 Not Found.

    Así que aquí está:

    server {
        listen 80;
        server_name www.*;
    
        root /usr/share/nginx/html;
    
        error_page 404 /404.html;
    
        location /{
            return 404;
        }
    
        location = /404.html {
            internal;
        }
    }
    
    • Gracias Alex! Esto funciona de maravilla.

Dejar respuesta

Please enter your comment!
Please enter your name here