Estoy tratando de mejorar la velocidad de la página de un sitio que ejecuto sirviendo contenido estático directamente desde NGINX en lugar de que la solicitud llegue a PHP.
Tengo páginas web en rutas como esta:
Cuando se genera una página para estos, se almacena en una ruta como esta:
La estructura de la ruta toma las primeras 4 letras del subdominio y luego sigue otra carpeta con la ruta completa y reemplaza "." con "_" - por ejemplo, "gamea.com" = "/juego/gamea_com/". El archivo de la página de caché real se almacena como "1.c"
¿Cómo podría lograrse esto a través de NGINX? Estoy un poco atascado, encontré este artículo pero no estoy seguro de cómo usarlo en mi caso. ¿Alguien puede proporcionar un ejemplo de configuración de NGINX que apunte a NGINX a la ruta correcta como se describe anteriormente?
agradezco a quien pueda ayudarme con esto!
El primer paso es capturar las tres partes del subdominio usando una expresión regular y luego pegarlas en una instrucción root . Utilice capturas con nombre, ya que las capturas numéricas pueden estar fuera del alcance donde se evalúan. Vea este documento para más detalles.
Por ejemplo:
server { server_name "~^(?<name1>.{4})(?<name2>.*)\.(?<name3>.*)\.example\.com$"; root /path/to/root/$name1/$name1$name2_$name3; ... } Alternativamente, decodifique la variable $http_host usando un map . La expresión regular es la misma y el resultado podría usarse en una declaración root o try_files .
Por ejemplo:
map $http_host $mypath { default "nonexistent"; "~^(?<name1>.{4})(?<name2>.*)\.(?<name3>.*)\.example\.com$" $name1/$name1$name2_$name3; } server { ... root /path/to/root; location / { try_files $uri /$mypath$uri =404; } } Puede dividir los try_files en dos bloques de location con:
root /path/to/root; location / { try_files $uri @other; } location @other { try_files /$mypath$uri =404; } Cambie los términos según los archivos que desee que Nginx busque primero. Utilice instrucciones add_header en cualquiera de las dos location para personalizar la respuesta adecuada. Vea este documento para más detalles. Cualquier location puede contener encabezados específicos