The post 502 Bad Gateway on NGINX with BuddyPress appeared first on Justin Silver.
]]>I recently switched over from Apache to NGINX for my WordPress hosting, and it was surprisingly easier than I expected. Alongside the W3 Total Cache plugin to handle my minification and object/db caching my sites are blazing fast. The one problem I did run into was random 502 errors on some pages. The fix was to update the server{} block of nginx.conf to include parameters for proxy_* buffers and fastcgi_* buffers. In my configuration this is in an include file so that it can be easily imported into all the different servers that I run on this host.
My full configuration for WordPress (which also supports pretty URLs, MultiSite, BuddyPress, and WooCommerce) is:
# Use the Nginx-Helper plugin to automatically generate this map
# https://wordpress.org/plugins/nginx-helper/
map $http_host $blogid {
default 0;
include /var/www/example.com/html/wp-content/uploads/nginx-helper/map.conf;
}
server {
# accept connections on all IP addresses, port 80
listen 80;
# listing on SSL port 443?
#listen 443 ssl;
#ssl on;
#ssl_certificate /etc/nginx/ssl/example.com.crt;
#ssl_certificate_key /etc/nginx/ssl/example.com.key;
# name this server
server_name example.com www.example.com;
# set the root folder for web files
root /var/www/example.com/html;
# MultiSite Configuration ################
# avoid PHP readfile()
location ^~ /blogs.dir {
internal;
alias /var/www/com.rovair/www/html/wp-content/blogs.dir;
access_log off;
log_not_found off;
expires max;
}
# WPMU files
location ~ ^/files/(.*)$ {
try_files /wp-content/blogs.dir/$blogid/$uri /wp-includes/ms-files.php?file=$1;
access_log off;
log_not_found off;
expires max;
}
# End MultiSite Configuration ############
index index.php;
# serve static files and send everything else to WordPress
try_files $uri $uri/ /index.php?$args;
# send PHP requests to fastcgi (uses spawn-fcgi)
location ~ \.php$ {
# zero-day exploit defense.
try_files $uri =404;
# performance boosts for PHP
sendfile on;
tcp_nopush off;
keepalive_requests 0;
# proxy buffers - no 502 errors!
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
# fastcgi buffers - no 502 errors!
fastcgi_buffering on;
fastcgi_buffer_size 16k;
fastcgi_buffers 16 16k;
# max timeouts (should match php.ini)
fastcgi_connect_timeout 600s;
fastcgi_send_timeout 600s;
fastcgi_read_timeout 600s;
# index page
fastcgi_index index.php;
# pass request to fastcgi/php-cgi via spawn-fcgi
fastcgi_pass localhost:53217;
# default fastcgi_params
include fastcgi_params;
# override fastcgi_params
fastcgi_param SERVER_NAME $host;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
break;
}
}
Some quick notes:
try_files will test to see if a file/directory exists and if not passes it off to WordPress’ index.php file – the ?$args at the end is important for WordPress to receive the entire $_REQUESTThe post 502 Bad Gateway on NGINX with BuddyPress appeared first on Justin Silver.
]]>