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 Instana®

With automated discovery, real-time monitoring and intelligent analysis, Instana helps teams detect issues earlier and investigate incidents.

Explore IBM Instana
Application development solutions

Accelerate the transformation of existing systems while delivering new cloud-native services with confidence.

Explore Application development solutions
Cloud Platform Engineering Services

Redefine excellence in cloud services and hybrid cloud operations with platforms designed for scalability, resilience and continuous innovation.

Explore cloud platform engineering services
Take the next step

Discover how teams are improving application performance with AI-powered observability. Learn how IBM Instana® helps detect issues faster, identify root causes and maintain reliability across every layer of your application stack.

  1. Explore IBM Instana
  2. Explore Application development solutions