Solving "502 Bad Gateway" with nginx & php-fpm
23 Sep 2012 • 1 minute readAfter upgrading php-fpm, my PHP-based sites were returning “502 Bad Gateway” errors. This can happen when the php5-fpm package reconfigures itself to listen on a different socket. Here’s how you can solve it.
Check to make sure that php-fpm is running with ps aux | grep php
- if you can’t see any php-fpm processes in the output, then you may need to re-install php-fpm. If php-fpm is running okay, then skip this first step.
sudo apt-get remove php5 php5-cgi php5-fpm
sudo apt-get install php5 php5-cgi php5-fpm
The thing to notice here is that the order in which you install the packages is important. In the past I have found that installing them in the wrong order causes the packages to be configured incorrectly.
Next, get php-fpm to listen on the correct host/port. In /etc/php5/fpm/pool.d/www.conf
change the listen
value to match the fastcgi_pass
location in your Nginx configuration. For example, I changed mine from:
listen = /var/run/php5-fpm.sock
To:
listen = 127.0.0.1:9000
If you are configuring php-fpm to listen on a Unix socket, you should also check that the socket file has the correct owner and permissions. While I wouldn’t recommend it, you can simply give read-write permissions to all with sudo chmod go+rw /var/run/php5-fpm.sock
.
Restart php-fpm with sudo service php5-fpm restart
and everything should work normally again.