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

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.