Node.js 502 Bad Gateway Issues and How To Resolve Them

Group of young IT programmers working with codes on computers in team

Recent Node.js 502 bad gateway issues

In December of 2018, many Node.js users noticed that their applications randomly returned an HTTP status code 502 “Bad Gateway” error. On the IBM Cloud, the affected applications are deployed as Cloud Foundry applications or as Docker containers in Kubernetes clusters.

The Node.js community immediately noticed the issue and recognized it as a regression bug that will affect different LTS runtime versions (6.14.x and 6.15.x, 8.14.x, and 10.14.x). Further information about this bug can be found in this Github issue on Node.js source code.

Immediately the community started to fix this bug. Before the end of 2018, the community released new minor versions which contain the fix. In particular, the minor versions released are 6.16.x, 8.15.x, and 10.15.x.

Steps to take to resolve the issue

If you have been affected by this issue, you can easily resolve it by forcing your application to use a higher Node.js runtime version from your package.json  file.

Here is an example of how to do that:

{
  "name": "get-started-node",
  "main": "server.js",
  "description": "An introduction to developing Node.js apps on the Bluemix platform",
  "version": "0.1.1",
  "private": false,
  "engines": {
    "node": "^7.10.0"
  },
  "scripts": {
    "start": "node server.js"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/IBM-Bluemix/get-started-node"
  },
  "dependencies": {
    "@dynatrace/oneagent": "^1.137.152-1.0.0",
    "body-parser": "^1.17.x",
    "cfenv": "^1.0.x",
    "cloudant": "1.9.x",
    "dotenv": "^4.0.0",
    "express": "^4.15.x",
    "npm": "^6.4.1",
    "semver": "^5.6.0"
  },
  "author": "IBM Corp",
  "license": "Apache-2.0"
}

As you can see, the package.json  file contains pretty much all of the dependencies that you need for your app. The most important section is:

"engines": {
    "node": "^7.10.0"
}

As you know, this section specifies which Node.js runtime version is to be used to run the application. Updating the value of this key with a “good” runtime version (e.g., 6.16.x, 8.15.x, or 10.15.x) will resolve this kind of issues.

If you are pushing your application in IBM Cloud on Cloud Foundry (using cf push APP_NAME ), you could try to use -b  option for setting an older buildpack version, but without changing the Node.js runtime version in package.json , you could still face the issue.

If you are deploying your application as a Docker container inside an IBM Cloud Kubernetes Service cluster and you are using the official Node.js images, you will not face this issue since you will automatically use always the last minor version for the major version chosen.

 

Author

Gabriele de Capoa

Staff Software Engineer - IBM Cloud Support

Khalid Abbas

IBM Cloud Support Engineer

Related solutions
IBM Bob

Empower development teams with IBM Bob, an AI partner that understands intent, supports secure coding practices, and helps accelerate software delivery across the development lifecycle.

Explore IBM Bob
Application development solutions

Unlock faster innovation by modernizing existing applications and equipping development teams to quickly create, deploy, and scale cloud-native services with greater efficiency and flexibility.

Explore application development solutions
Application development services

Enable developers to build applications once, accelerate continuous innovation through rapid iteration, and deploy seamlessly across hybrid and multicloud environments.

Explore application development services
Take the next step

Harness generative AI and advanced automation to create enterprise-ready code faster. Bob models to augment developer skill sets, simplifying and automating your development and modernization efforts.

  1. Discover IBM Bob
  2. Explore application development solutions