Reglas de reescritura nginx con pasajero
Estoy intentando migrar a nginx desde Apache usando Passenger en ambas instancias para alojar una aplicación Rails. La aplicación toma una solicitud, que es para una imagen, si la imagen existe en / system / logos / $ solicita la imagen, entonces debe publicarse o se le debe permitir golpear la aplicación Rails para generarla si es necesario (donde está en caché a / system / logos).
En Apache utilicé lo siguiente:
RewriteCond %{DOCUMENT_ROOT}/system/logos/%{REQUEST_FILENAME} -f
RewriteRule ^/(.*)$ http://assets.clg.eve-metrics.com/system/logos/$1
Esto funcionó bien. Los activos. subdominio es otro subdominio pero con la misma raíz, solo Pasajero deshabilitado, específicamente configurado para hospedar archivos estáticos (caduca).
En nginx estoy usando lo siguiente:
server {
listen 80;
passenger_enabled on;
server_name clg.eve-metrics.com www.clg.eve-metrics.com;
root /opt/www/clg/current/public;
gzip on;
gzip_min_length 1000;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain application/xml text/css application/javascript;
gzip_disable msie6;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
if (-f $document_root/system/logos$request_filename) {
rewrite ^/(.*)$ http://assets.clg.eve-metrics.com/system/logos/$1 break;
}
}
Esto no funciona tan bien. En todo, de hecho. Nunca redirige a la ruta en caché y nunca llega a la aplicación Rails. Es como si nginx asumiera que es un activo estático, por lo que no se lo pasa a Passenger. ¿Hay una manera de detener este comportamiento para que llegue a la aplicación?