En Nginx existe try_files
una directiva de configuración que "comprueba la existencia de archivos en orden y devuelve el primer archivo que se encuentra". Me parece muy ordenado hacer esto
location ~* \.(gif|jpe?g|css|js)$ {
try_files $uri 404;
}
que es una forma segura de servir directamente archivos estáticos, sin molestar a los marcos web. ¿Cómo puedo hacer lo mismo en Apache?
apache-2.2
nginx
phunehehe
fuente
fuente
Respuestas:
Comúnmente veo esto hecho con mod_rewrite:
Significa "Si un archivo no existe en el sistema de archivos, dele el proxy a través de mi clúster mod_proxy_balancer". De lo contrario, si el archivo existe en el sistema de archivos, Apache simplemente lo sirve en relación con lo definido
DocumentRoot
en su host virtual.Pero esa no es mi forma favorita, principalmente porque requeriría una
stat
llamada al sistema por solicitud.Con mod_proxy, puede usarlo
ProxyPassMatch
si tiene una versión suficientemente nueva de Apache ( consulte la documentación ). Como:ProxyPassMatch \.(gif|jpe?g|css|js)$ !
Que utiliza el! para indicar que Apache no debe proxy solicitudes que coinciden con esa expresión regular.
Si está utilizando una versión anterior de Apache, tendrá la
ProxyPass
directiva disponible, pero solo coincide con los prefijos de URI (este es mi método preferido actual):Por supuesto, si debe hacer una coincidencia de expresiones regulares como mencionó anteriormente, simplemente puede modificar la regla mod_rewrite que publiqué en la parte superior para negar una coincidencia contra el
%{REQUEST_URI}
.¡Espero que ayude!
fuente
try_files
, porque verifica la existencia del archivo. Sin embargo, no parece haber una manera de hacerloProxyPass
.