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 $_REQUEST
The post 502 Bad Gateway on NGINX with BuddyPress appeared first on Justin Silver.
]]>