passenger jetzt auch für Nginx 0

Posted by fwoeck
on Friday, April 17

Grade ist die neue Passenger-Version 2.2.0 erschienen, die nun auch Nginx unterstützt. Das war für mich die Schwelle, Nginx anzutesten und insgesamt ist es alles einfach, wie bei Phusion gewohnt:

# gem install passenger

# passenger-install-nginx-module

Das war’s schon – fast. Das install-nginx-module lädt die Nginx-Source herunter, kompiliert sie und schreibt die Installation nach /opt/nginx. Das Passengermodul wird direkt eingebunden und man muss nur noch seine Hosts einpflegen:

Konfiguration

/opt/nginx/conf/nginx.conf:

passenger_pool_idle_time 0;

  server {
    listen 80;
    root /var/www/tracks/public;
    server_name tracks.int.bm.net tracks;
    rails_env production;
    passenger_enabled on;
  }

Ein

/opt/nginx/sbin/nginx

startet den Server.

X-Accel-Redirect

Anders als der Apache unterstützt Nginx direktes Filestreaming über den “X-Accel-Redirect”-Header. FIXME: die Konfiguration für mein laufendes Railsprojekt klemmt an dieser Stelle leider noch – die folgende Konfiguration führt zu einer Fehlermeldung:

server {
  listen 80;
  root /var/www/pplpool/current/public;
  server_name marsexpress.int.bm.net marsexpress;
  rails_env production;
  passenger_enabled on;
  location /uploads/ {
    internal;
    root /;
  }
}
1
2
3
4
5
6
7
8
9
10
def attachments
  @asset = QAttachment.find(params[:id])
  if
    head(:x_accel_redirect => "#{@asset.public_filename}", :content_type => 
      @asset.content_type, :content_disposition => 
      "attachment; filename=#{URI.encode(@asset.filename)}")
  else
    send_file(@asset.public_filename, :type => @asset.content_type)
  end
end

Update vom 20.4.: Aus unklaren Gründen läuft meine mephisto-Installation (dieser Blog) mit der aktuellen nginx-Passenger-Combo nicht einwandfei – ich steige erstmal wieder auf den Apache um.

Weblinks

  1. using-nginx-to-send-files-with-x-accel-redirect
  2. wiki.nginx.org/NginxXSendfile
Comments

Leave a response

Comment