
Tengo algún problema al configurar Nginx para servir correctamente una aplicación AngularJS. El servidor está configurado de la siguiente manera:
www.example.com we have the landing page of the application
www.example.com/app we have the application itself
la ruta a la aplicación es la siguiente:
/usr/share/nginx/html/example.com/app/
y los archivos estáticos están dentro de lo siguiente:
/usr/share/nginx/html/example.com/app/public/app/assets
Ahora me gustaría configurar el almacenamiento en caché en "sin caché" para todos los archivos html tanto en la página de inicio como en la aplicación, pero configurar el caché en 60 días para todos los archivos js, css e imágenes.
Esta es la configuración actual de mi servidor nginx:
server {
listen 80;
index index.html;
server_name example.com www.example.com;
location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
expires 60d;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
location ^~ /app {
alias /usr/share/nginx/html/example.com/app/public/;
expires -1;
add_header Pragma "no-cache";
}
location / {
root /usr/share/nginx/html/example.com;
expires -1;
add_header Pragma "no-cache";
add_header Cache-Control "no-store, no-cache, must-revalidate, post-check=0, pre-check=0";
}
}
Ahora el problema es que la directiva de ubicación:
location ~* \.(?:ico|css|js|gif|jpe?g|png)$
nunca se ejecuta, por lo que el caché se establece como sin caché como se define en la directiva /app.
¿Alguna idea?
gracias
Respuesta1
Una cita de la documentación de nginx:
Si la ubicación del prefijo coincidente más largo tiene el modificador “^~”, entonces las expresiones regulares no se verifican.
Entonces, el problema aquí es tu location ^~ /app
definición. El ^
modificador hace que nginx ignore la expresión regular de las imágenes.
Deberías usar location /app
en su lugar. No necesita una coincidencia de expresiones regulares en este lugar, una simple coincidencia de prefijos es suficiente.
Respuesta2
Supongo que el problema es "~*", prueba solo con "~". Ejemplo:
location ~ \.(?:ico|css|js|gif|jpe?g|png)$