How to set up load balancer with SSL?

March 29, 2014 2.6k views
I currently have a single server with a Django stack. I have nginx with an SSL certificate for HTTPS. I want to scale the web layer by putting an nginx load balancer in front, and adding IP addresses to the upstream module config as I spin up new droplets to handle the load. Pretty straightforward to set up, but I can't figure out how to make it work with SSL enabled. I tried the following: 1. Enabled SSL in both the load balancer droplet and each one of the web app droplets. This doesn't work because the SSL certificate in the web app droplets was created with a specific domain name. The load balancer fails to connect to the web app because it can't verify the SSL certificate because it is using an IP address and not a FQDN, e.g not 2. Then I tried enabling SSL only on the load balancer. The load balancer can communicate via HTTP with the web app droplets, but then that traffic would not be secure over a public network. I'm at a loss. Could you provide some advice in how to proceed? Do I need to set up a private network between the load balancer and the web app droplets? If so, how? Is there any other techniques using SSL certificates, or DNS configuration settings perhaps? Any help would be appreciated! BTW I'm using Ubuntu 12.10 x64 Thanks! LA
2 Answers
You can set up SSL only on the load balancer and communicate with the app droplets via HTTP over the private network (see

If you still want to use SSL on all of the droplets including the app droplets, you can create a self-signed SSL cert with the app droplet's IP address as the Common Name instead of the hostname.
Here's documentation on how to set up and use DigitalOcean private networking.
I seems like combining both would be the best. Thanks @kamal I will give it a try.
Have another answer? Share your knowledge.