Fixing timeout between Nginx and PHP-FPM

SysadminIn case you've set up Nginx as reverse proxy for PHP-FPM and you have very slow or complex PHP script that executes for quite some time, you've probably seen an 504 gateway time-out error. This is pretty common error, but in most cases people are barking at the wrong tree and they're having difficulties finding out which timeout directive is the right one for their scenario.

I've seen some people desperately experimenting with proxy_read_timeout, send_timeout, even client_header_timeout and client_body_timeout directives, but if they bothered to take a peek into Nginx's error_log, they would've seen an error such as:


Adding custom modules to Nginx RPM

Skeptical babyIf you've installed Nginx from source, adding custom modules is easy. You simply recompile Nginx and include the module you want. But what if you've installed Nginx from RPM? How do you install custom module in this case? Well, you'll need to repackage RPM and although it may sound really complicated, it's not that big of a deal.

In this example, I'll explain how to include Frickle's Nginx slow cache module for caching static files. This module is excellent if your static files are stored on a slow filesystem (e.g. NFS storage, slow HDD's). To speed things up, Nginx can fetch these files once, and then cache them on a faster filesystem (e.g. local SAS/SSD). This way, Nginx will serve the files much faster and you'll minimize the network traffic.


Nginx maintenance page with 503 HTTP status code

Conspiracy KeanuThe other day I had to do some maintenance on a server with Nginx configured as a reverse proxy for Apache. The configuration was very simple - Nginx was in front of Apache and it served static content. Apache in the back was responsible for PHP stuff.

During the maintenance period, I wanted to redirect all requests to a custom maintenance page. Also, to avoid search engines indexing my maintenance page, I wanted that maintenance page returns proper HTTP status code - i.e. 503 service unavailable.