¿Cómo coincide la solicitud con el nombre del servidor configurado en nginx?
La directiva server_name en nginx se utiliza principalmente para configurar hosts virtuales basados en nombres. El orden de coincidencia de la directiva server_name después de recibir la solicitud es: 1. Coincidencia precisa de server_name, por ejemplo:
servidor {
escucha 80;
nombre_servidor frady.info www.frady.info;
...
}
2. Cadena que comienza con * comodín:
servidor {
escucha 80;
nombre_servidor *.frady.info;
...
}
3. Cadena que termina con * comodín:
servidor {
escucha 80 ;
nombre_servidor www.*;
...
}
4. Expresión regular coincidente:
servidor. {
escuchar 80;
nombre_servidor ~^(?
..
}
nginx buscará coincidencias con el nombre del servidor en el orden de 1, 2, 3, 4. La búsqueda se detendrá solo si hay una coincidencia, por lo que usamos esto Al usar instrucciones, debe distinguir claramente su orden de coincidencia (similar a la instrucción de ubicación).
Hagamos uno complicado, para que pueda coincidir tanto con nombres de dominio genéricos como con algunos nombres de dominio que comienzan con blog
Ambos son regulares y tienen la misma prioridad. ¿Cuál coincidirá con precisión?
#Matches *.frady.info
server_name ~^(.+)?\.frady\.info$;
# Match blog*.frady.info
~^blog(.+)?\.frady\.info$;
La siguiente es una forma natural de escribir, pero en realidad es incorrecto porque* tendrá prioridad sobre las expresiones regulares, por lo que cualquier cosa escrita en expresiones regulares no coincidirá
#Matches *.frady.info
server_name *.frady.info;
# Match blog*.frady.info
~^blog(.+)?\.frady\.info$;
También puedes escribir algo como este
#Match blog*.frady.info
~*^blog(.+)?\.frady\.info$;
No hay problema al probar con el probador de expresiones regulares. Póngalo en nginx y luego descubrí que se informó un error.
Más tarde me di cuenta de que el nombre de dominio en realidad no distingue entre mayúsculas y minúsculas, por lo que nginx no necesita procesar esto. parte
Descripción oficial:
p>1.nombre exacto
2.nombre comodín más largo que comienza con un asterisco, por ejemplo, “*.example.org”
3.nombre comodín más largo que termina con un asterisco, por ejemplo, “mail.*”
4.primera expresión regular coincidente (en orden de aparición en un archivo de configuración)