Rails アプリをホストするために、両方のインスタンスで Passenger を使用して Apache から nginx に移行しようとしています。アプリは画像のリクエストを受け取ります。画像が /system/logos/$requestedimage に存在する場合は、画像が提供されるか、Rails アプリにヒットして必要に応じて生成できるようにする必要があります (その画像がある場所)。 /system/logos にキャッシュされます)。
Apache では、以下を使用しました。
RewriteCond %{DOCUMENT_ROOT}/system/logos/%{REQUEST_FILENAME} -f
RewriteRule ^/(.*)$ http://assets.clg.eve-metrics.com/system/logos/$1
これはうまくいきました。資産。subdomain は別のサブドメインですが、ルートは同じで、Passenger のみが無効になっており、特に静的ファイルをホストするように設定されています (有効期限が切れます)。
nginx では、以下を使用しています。
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;
}
}
これはうまくいきません。まったく、実際には。キャッシュされたパスにリダイレクトされることはなく、Rails アプリにヒットすることもありません。nginx が静的アセットであると想定しているため、Passenger に渡さないようです。アプリにヒットするようにこの動作を停止する方法はありますか?