The following things have changed since 2.2.1:
- Nginx/Apache: Rack 1.0.0 support
- We now support the Rack 1.0 specification. If you were experiencing any Rack-related problems then please upgrade to Phusion Passenger 2.2.2. Issue #279.
Please note that Rails edge have a few Rack-related bugs. We submitted some patches, which are currently being reviewed: http://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets/2564-acrequestcontent_type-should-return-a-string
- Nginx: SSL fixes
- In the Nginx version, calling
request.ssl?in Rails returned false even on SSL hosts. This has been fixed: issue #264.
- Nginx: PATH_INFO is now set correctly
- The Nginx version didn’t set PATH_INFO correctly. Rails and Merb were unaffected because they use REQUEST_URI, but Rails Metal and Sinatra, and possibly other frameworks as well, were affected. Issue #260.
- Nginx: support for graceful restart
- A graceful restart used to leave junk processes behind. This has been fixed: issue #255.
- Nginx: ensure that the response line contains an HTTP reason phrase
- If the backend application didn’t sent a reason phrase (e.g. the “OK” part of “200 OK”) then the response sent by Nginx won’t contain a reason phrase as well. This breaks Ajax requests on Internet Explorer, and probably some other browsers as well. Phusion Passenger will now add a reason phrase if the original response didn’t contain one. Issue #278.
- Nginx: fixed a crash in passenger-install-nginx-module if the user specified a custom config file location
- If the user specified a custom config file location by passing –conf-file to the Nginx configure script, the passenger-nginx-module will crash. This has been fixed: issue #272.
- Nginx: fixed a crash that occurs if the last header is an empty string
- If the last header value that Nginx internally passes to the backend application is an empty string, then this would cause a crash in the backend application. This problem has been fixed.
- Nginx/Apache: proper support for fork()
- In previous versions of Phusion Passenger, if one forks() a child process without calling exec() as well, then Phusion Passenger won’t finish the request cycle until the child process has exited. This has been fixed: the child process won’t block the request cycle even if it doesn’t call exec().
Note that the Spawn plugin attempted to fix this issue, but their fix doesn’t work for Rails 2.3. We’ve notified the author of the Spawn plugin about the fact that their fix is not necessary on Phusion Passenger 2.2.2 and later. Users who use the Spawn plugin are advised to upgrade to Phusion Passenger 2.2.2 and the latest version of the Spawn plugin.
- Nginx/Apache: fixed some problems on OS X
- Nginx/Apache: The Rakefile is now parallelizable
- Future versions of Rake may support invoking tasks in parallel with the -j command line argument, just like make. This can potentially speed up compilation. We’ve updated the Rakefile in preparation for this future Rake feature.
- Nginx/Apache: documentation updates
- A few errors in the documentation have been fixed. The Rackup specification for Ramaze has been updated.