Phusion Passenger is a fast and robust web server and application server for Ruby, Python and Node.js. It works by integrating into Apache and Nginx and turning them into a fully-featured application server. It has high-profile users such as New York Times, AirBnB, Symantec, Pixar, etc, and comes with many features that make your life easier and your application perform better.

Phusion Passenger is under constant maintenance and development. Version 4.0.16 is a bugfix release.

Recent changes

Version 4.0.15 was a hotfix release for an Enterprise customer. The changes in 4.0.15 and 4.0.16 combined are as follows:

Much improved out-of-band work

The number of processes which may perform out-of-band work concurrently has been limited to 1. Furthermore, processes which are performing out-of-band work are now included in the max pool size constraint calculation. However, this means that in order to use out-of-band work, you need to have at least 2 application processes running. Out-of-band work will never be triggered if you just have 1 process. Partially fixes issue #892.

New stability feature: request queue limiting

Phusion Passenger now displays an error message to clients if too many requests are queued up, instead of letting them wait. This much improves quality of service. By default, "too many" is 100. You may customize this with `PassengerMaxRequestQueueSize` (Apache) or `passenger_max_request_queue_size` (Nginx).

Configurable startup time limiting

A new configuration option, `PassengerStartTimeout` (Apache) / `passenger_start_timeout` (Nginx), has been added. This option allows you to specify a timeout for application startup. The startup timeout has exited since version 4.0.0, but before version 4.0.15 it was hardcoded at a value of 90 seconds. Now it is customizable. Fixes issue #936.

Reduced memory usage in Phusion Passenger Standalone

When `passenger start` is run with `–daemonize`, the frontend exits after starting the Nginx core. This saves ~20 MB of memory per `passenger start` instance.

It is now possible to preprocess events before they are sent to Union Station

This is useful for removing confidential data as demonstrated in this example `config/initializers/passenger.rb` file:

if defined?(PhusionPassenger)
event_preprocessor = lambda do |e|
e.payload[:sql].gsub!("secret","PASSWORD") if e.payload[:sql]
end
PhusionPassenger.install_framework_extensions!(:event_preprocessor => event_preprocessor)
end

Misc other changes

[Enterprise] The `PassengerMaxRequestTime`/`passenger_max_request_time` feature is now available for Python and Node.js as well, and is no longer limited to just Ruby. Fixes issue #938.

[Nginx] Introduced a configuration option `passenger_intercept_errors`, which decides if Nginx will intercept responses with HTTP status codes of 400 and higher. Its effect is similar to `proxy_intercept_errors`.

[Standalone] Phusion Passenger Standalone is now also packaged in the Debian packages.

[Standalone] Fix a problem with the `passenger stop` command on Ruby 1.8.7. The ‘thread’ library was not properly required, causing a crash.

An environment variable `PASSENGER_THREAD_LOCAL_STORAGE` has been added to the build system for forcefully disabling the use of thread-local storage within the Phusion Passenger codebase. This flag useful on systems that have broken support for thread-local storage, despite passing our build system’s check for proper thread-local storage support. At the time of writing, one user has reported that Ubuntu 12.04 32-bit has broken thread-local storage report although neither the reporter nor us were able to reproduce the problem on any other systems running Ubuntu 12.04 32-bit. Note that this flag has no effect on non-Phusion Passenger code. Fixes issue #937.

Installing 4.0.16

Quick install/upgrade

Open source users can install the open source version of 4.0.16 with the following commands. Note that these instructions are very basic and may not cover steps that may be relevant to your specific system, such as setting up the right file permission. Please refer to the in-depth instructions if you have trouble installing.

“Phusion” and “Phusion Passenger” are registered trademarks of Phusion. “Rails”, “Ruby on Rails” and the Rails logo are registered trademarks of David Heinemeier Hansson. All other trademarks are property of their respective owners.