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