What is the cause of the "502 Bad Gateway" after Ghost 1.8.7 update

Viewed 4336

I recently installed Ghost 1.8.4 and Nginx on my AWS ec2 Ubuntu 16.04 server. When I loaded my blog site, it correctly took me to the Ghost home page, from where I logged into Ghost admin. On the admin screen, there was a message to update.

I ran ghost update in putty

The update appeared to be successful, but when I returned to my blog site, I received the following error:

502 Bad Gateway nginx/1.10.3 (Ubuntu)

  1. Does anyone know a probably cause of this error and how to resolve?
  2. I checked some posts, which suggested I should have turned Ghost off before the update. If this is true, is my ghost installation now corrupted?
  3. I went to my ghost directory in /var/www/ghost and tried to run:

    sudo service ghost start

    but it returned:

    Failed to start ghost.service: Unit ghost.service not found

    and trying to stop, returns Unit ghost.service not loaded. Am I running the command from the correct location?

3 Answers

I've experienced 502 issues with ghost behind nginx several times over a few years of running it. I'm not sure if the cause of mine today is the same as yours, but what I observed was that after a restart ghost had changed its port number to one different than what its nginx config was listening on.

I followed these directions from https://web.archive.org/web/20200807095031/https://www.danwalker.com/running-ghost-on-a-5-digital-ocean-vps/ which resolved it for me:

See which port ghost is running on:

sudo netstat -plotn

Check that it matches the proxy_pass in the nginx config file in /etc/nginx/sites-enabled.

In my case the port in the nginx config had incremented to 2369 while the actual node process was running on 2368. Changing the proxy_pass port back to 2368 in my ghost blog's nginx config file resolved the issue for me.

I ran into the same problem after upgrading ghost.

Make sure the port number configured in your ghost's config file and the proxy_pass in your ghost site's nginx configuration files match.

Check the port number in /var/www/ghost/config.production.json matches the proxy_pass port in the nginx config files.

/var/www/ghost/system/files/<yourDomainName>.<extension>.conf
/var/www/ghost/system/files/<yourDomainName>.<extension>-ssl.conf

In my case I had to change 2368 to 2369 in the nginx config files to fix the issue.

Make sure you restart your ghost and nginx after you make the changes.

# restart your ghost site
cd /var/www/ghost/
ghost restart 
# restart nginx
sudo systemctl restart nginx

Hope this helps someone.

Apparently when I posted this issue it was due to a bug in the Ghost CLI that the ghost team were in the process of fixing.

They provided me with these instructions to run on my server:

systemctl stop ghost_www-blogwebsite-com
ghost update --force

The resulting output:

stopping Ghost [skipped]
Removing old Ghost versions [skipped]

This fixed the problem and updated to the correct version.

Related