title: Node.js Nginx LetsEncrypt Bad Gateway
body: <p>I'm setting up a Node.js app with nginx and LetsEncrypt.</p>
  
  <p>I set it up, but every time I try to access it, it gives me a 502 Bad Gateway error.</p>
  
  <p>Node.js is not showing ANYTHING, so I figured it's not even accessing the app, checked the nginx log and sow this...</p>
  
  <pre><code>2016/02/27 09:12:11 [error] 15706#0: OCSP_basic_verify() failed (SSL: error:27069076:OCSP routines:OCSP_basic_verify:signer certificate not found) while requesting certificate status, responder: ocsp.int-x1.letsencrypt.org
  2016/02/27 09:12:11 [error] 15706#0: *1 upstream prematurely closed connection while reading response header from upstream, client: 212.121.109.65, server: gamepit.nl, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8080/", host: "gamepit.nl"
  2016/02/27 09:12:11 [error] 15706#0: *1 upstream prematurely closed connection while reading response header from upstream, client: 212.121.109.65, server: gamepit.nl, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8080/", host: "gamepit.nl"
  2016/02/27 09:12:11 [error] 15706#0: *1 upstream prematurely closed connection while reading response header from upstream, client: 212.121.109.65, server: gamepit.nl, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8080/", host: "gamepit.nl"
  2016/02/27 09:12:11 [error] 15706#0: *1 upstream prematurely closed connection while reading response header from upstream, client: 212.121.109.65, server: gamepit.nl, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:8080/", host: "gamepit.nl"
  </code></pre>
  
  <p>nginx config:</p>
  
  <pre><code>upstream app_gamepit {
          server 127.0.0.1:3000;
  }
  
  # the nginx server instance
  server {
      listen 443 ssl;
      server_name gamepit.nl;
      access_log /var/log/nginx/gamepit.log;
  
      ssl on;
      gzip on;
  
      ssl_certificate /etc/letsencrypt/live/gamepit.nl/cert.pem;
      ssl_certificate_key /etc/letsencrypt/live/gamepit.nl/privkey.pem;
  
      ssl_stapling on;
      ssl_stapling_verify on;
      ssl_trusted_certificate /etc/letsencrypt/live/gamepit.nl/fullchain.pem;
  
      # pass the request to the node.js server with the correct headers
      # and much more can be added, see nginx config options
      location / {
        proxy_pass https://app_gamepit/;
        proxy_redirect off;
      }
  }
  
  server {
      listen 443;
      server_name www.gamepit.nl;
      rewrite ^/(.*) https://gamepit.nl/$1 permanent;
  }
  </code></pre>
  
  <p>Node.js app (very small, since I'm testing...)</p>
  
  <pre><code>var fs = require('fs');
  var https = require('https');
  
  var privateKey  = fs.readFileSync('/etc/letsencrypt/live/gamepit.nl/privkey.pem', 'utf8');
  var certificate = fs.readFileSync('/etc/letsencrypt/live/gamepit.nl/fullchain.pem', 'utf8');
  var ca = fs.readFileSync('/etc/letsencrypt/live/gamepit.nl/chain.pem', 'utf8');
  
  var credentials = {key: privateKey, cert: certificate, ca: ca};
  
  var app = require('express')();
  
  app.use(function(req, res, next) {
          console.log('site call!', req.originalUrl);
          next();
  });
  
  app.get('/', function(req, res) {
          res.send('Hello World');
          res.end();
  });
  
  var https = https.createServer(credentials, app);
  
  https.listen(3000,'127.0.0.1',  function() {
          console.log('running!');
  });
  </code></pre>