name - nginx listen
nginx server_name comodÃn o catch-all (4)
Tengo una instancia de nginx en ejecución que sirve varios sitios web. El primero es un mensaje de estado en la dirección IP del servidor. El segundo es una consola de administración en admin.domain.com
. Estos funcionan bien. Ahora me gustaría que todas las demás solicitudes de dominio vayan a un único index.php
: tengo montones de dominios y subdominios y no es práctico enumerarlos todos en una configuración de nginx.
Hasta ahora he intentado configurar server_name
a *
pero eso falló como un comodín no válido. *.*
funciona hasta que agregue los otros bloques de servidor, entonces supongo que entra en conflicto con ellos.
¿Hay alguna forma de ejecutar un bloque de servidores catch-all en nginx después de que se hayan definido otros sitios?
NB No soy un spammer, estos son sitios genuinos con contenido útil, ¡solo tienen el mismo CMS de una base de datos!
Cambie la opción de escuchar esto en su bloque de servidores catch-all. (Agregar default_server
) esto tomará todas sus conexiones no definidas (en el puerto especificado).
listen 80 default_server;
si desea enviar todo a index.php si el archivo o la carpeta no existe;
try_files $uri /$uri /index.php;
Esto funcionará:
server_name ~^(.+)$
Para mí, de alguna manera, definir default_server no funcionaba. Lo solucioné por
server_name ~^.*$
usando la expresión regular de todos.
Un subrayado simple también funciona:
server_name _;