Kiran
Kiran

Reputation: 1195

Enabling HTTPS on NGINX for a node js application is not working

I am using a simple "hello world" Express.JS (8080 port) application deployed in Ubuntu Server, with NGINX reverse proxy setup as below.

The application working well for http port but not for https port

And my configuration file is like this:

server {
        listen 80;
        listen 443 default ssl;
        server_name localhost;

         ssl_certificate /root/mydir/ssl/certificate.crt;
         ssl_certificate_key /root/mydir/ssl/private.key;

    location / {
                proxy_pass http://localhost:8080;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection 'upgrade';
                proxy_set_header Host $host;
                proxy_cache_bypass $http_upgrade;
        }
}

The configuration is working fine for http connection for my domain testdomain.com, but completely failing for https://testdomain.com or https://www.testdomain.com

What went wrong with this configuration?

SSL certs are generated by sslforfree.com.

Upvotes: 0

Views: 3853

Answers (1)

Sergiu
Sergiu

Reputation: 3195

server {
  listen       80;
   server_name example.com;

   # force redirect http to https
   rewrite ^ https://$http_host$request_uri? permanent;    
}

server {
  listen 443;
   ssl on;
   ssl_certificate /root/mydir/ssl/certificate.crt;
   ssl_certificate_key /root/mydir/ssl/private.key;
   server_name example.com;

   proxy_pass         http://127.0.0.1:8000;
   proxy_set_header   Host $host;
   proxy_set_header   X-Real-IP $remote_addr;
   proxy_set_header   X-Forwarded-Proto https;
   ....
 }

Upvotes: 1

Related Questions