przepisuj nginx z Pasażerem
Próbuję przeprowadzić migrację do nginx z Apache za pomocą Passenger w obu przypadkach do hostowania aplikacji Rails. Aplikacja przyjmuje żądanie, które dotyczy obrazu - jeśli obraz istnieje w / system / logos / $ requestimage, to powinien on zostać obsłużony lub powinien mieć możliwość uderzenia w aplikację Rails w celu wygenerowania go w razie potrzeby (gdzie jest wtedy buforowane do / system / logos).
W Apache użyłem następujących:
RewriteCond %{DOCUMENT_ROOT}/system/logos/%{REQUEST_FILENAME} -f
RewriteRule ^/(.*)$ http://assets.clg.eve-metrics.com/system/logos/$1
To działało dobrze. Aktywa. subdomena jest kolejną subdomeną, ale z tym samym rootem, tylko Passenger wyłączony, specjalnie skonfigurowany do hostowania plików statycznych (wygasa).
W nginx używam następujących:
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;
}
}
To nie działa tak dobrze. Właściwie to w ogóle. Nigdy nie przekierowuje do ścieżki buforowanej i nigdy nie trafia do aplikacji Rails. To tak, jakby nginx zakładał, że jest to statyczny składnik, więc nie przekazuje go Pasażerowi. Czy istnieje sposób na zatrzymanie tego zachowania, aby trafiło ono do aplikacji?