Я смущаюсь о своей проблеме с X-Sendfile, NGinx и Rails. Я прочитал несколько документов и руководств, но я просто не понимаю.X-Sendfile, Rails & Nginx
Что бы я ни пытался, я получаю 404. Вот часть X-Sendfile NGINX.
location/{
proxy_set_header X-Sendfile-Type X-Accel-Redirect;
proxy_set_header X-Accel-Mapping /var/www/cube_storage/uploads/=/cdn; #maps a real path to the internal location
...
} # end of location app
location /cdn {
root /var/www/cube_storage/;
internal;
proxy_set_header X-Sendfile-Type X-Accel-Redirect;
proxy_set_header X-Accel-Mapping /var/www/cube_storage/=/cdn/;
}
X-Accel-Redirect включен в моих рельсах приложении:
config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx
Вот код контроллера, который отвечает за обслуживание файла:
def image
@activity = AccountActivity.where(:id => params[:id]).first
if [email protected] || [email protected]_attachment_is_image? || @activity.file_attachment_name != requested_file_name()
l = Logger.new("#{Rails.root}/logs/cdn_activity.log")
l.info(params.inspect)
render :file => "#{Rails.root}/public/404.html", :layout => false, :status => :not_found
else
begin
if !params[:version] || params[:version] == "original"
t = @activity.file_attachment # thats the original image!
else
t = @activity.file_attachment.send(params[:version])
end
send_file t.current_path ,:disposition => 'inline'
rescue Exception => ex
l = Logger.new("#{Rails.root}/logs/cdn_activity.log")
l.info("--------------------------")
l.info(Time.now.to_s)
l.info("exception -> #{ex.message}")
l.info("params: #{params.inspect}")
render :file => "#{Rails.root}/public/404", :layout => false, :status => :not_found
end
end
конца
Я использую несущую волну как двигатель хранения. Может быть, кто-то просто видит мою ошибку, но я даже не пробовал несколько часов.
Еще одна вещь, запрос даже не отображается в development.log (да, я активировал X-Accel для dev тоже).
С уважением, Алекс
Для более углубленного руководства: [проверить этот блог] (http://thedataasylum.com/articles/how-rails-nginx-x-accel-redirect-work- together.html) –