nginx переписать правила с помощью Passenger
Я пытаюсь перейти на nginx из Apache, используя Passenger в обоих случаях для размещения приложения на Rails. Приложение принимает запрос, который относится к изображению - если изображение существует в / system / logos / $ requiredimage, то оно должно быть обслужено, или ему должно быть разрешено поразить приложение Rails, чтобы сгенерировать его при необходимости (где оно тогда кэшируется в / system / logos).
В Apache я использовал следующее:
RewriteCond %{DOCUMENT_ROOT}/system/logos/%{REQUEST_FILENAME} -f
RewriteRule ^/(.*)$ http://assets.clg.eve-metrics.com/system/logos/$1
Это работало нормально. Активы. поддомен - это еще один поддомен, но с тем же корнем, только отключенный 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 предполагает, что это статический актив, поэтому не передает его Пассажиру. Есть ли способ остановить это поведение, чтобы оно попало в приложение?