Nginx + Phusion Passenger 3 problem with "504 Gateway time-out"


I have a Rails 3.2 app. There is a specific request that takes a long time to execute. The context is, the user uploads a pdf, and then we have some processing through carrierwave + rmagick that generate a jpeg from the first page of the document. Everything works in dev mode using both webrick and thin. The problem happens on the prod environment with Nginx + Passenger.

The request takes a lot of time and the browser is redirected to a "504 Gateway time-out". At this point, the file was already sent, but it's being processed (the pdf manipulation task really takes time). I found several threads with solutions like this:!topic/phusion-passenger/LOEb7x-nAy0 that basically consists in patching the hardcoded timeout values on the passenger source before compiling the module.

There is actually no error on the request and the manipulation of the files itself. After a while, the work on the server is finished without any bad behaviour. The processed jpeg is served by the app as nothing bad has actually hapened. This evidence summed up with the fact that everything works in dev mode, points to a nginx+passenger problem.

Anyone has a more clearer solution to the passenger+nginx configuration scheme?

For actions that take a lot of time I suggest to send it to the background if possible, you can use:


Thanks for your reply, but there's actually no need for speed increase or scalability whatsoever so there's no need to setup a background job queue system. If I cannot solve this problem, I'll probably try thin instead of passenger. I'm actually curious about the solution of this issue :smiley:

Many times I find best to use Nginx + unicorn as the app server, you might give that a try.