Question

How to register droplets and route to them based on URL segment

Posted May 15, 2021 72 views
NetworkingDigitalOcean Droplets

Hi,

We’re looking for a solution where we can register an IP (Droplet) and then route to this IP based on URL segment.

The process would be like this:

  1. Droplet is created through the API and registers itself with the routing-service based on an arbitrary ID.
  2. The user access the Droplet through an address like https://my.service.org/<arbitrary_id> which routes to the correct Droplet based on the arbitrary_id.
  3. When destroyed the Droplet unregisters with the service.

Is this possible through something like a reverse proxy?

Thanks!

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

×
Submit an Answer
1 answer

Hi there,

Yes this would be doable with a reverse proxy setup with Nginx. The Nginx server block configuration will look something like this:

server {
    listen 80;
    server_name your_domain.com www.your_domain.com;

    location /arbitrary_id_1 {
        proxy_pass http://droplet_ip;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location /arbitrary_id_2 {
        proxy_pass http://droplet_ip;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

For more information I could suggest this tutorial here:

https://www.digitalocean.com/community/tutorials/how-to-configure-nginx-as-a-web-server-and-reverse-proxy-for-apache-on-one-ubuntu-18-04-server

Hope that this helps!
Regards,
Bobby

by Jesin A
In this tutorial you'll configure Nginx as both a web server and as a reverse proxy for Apache to host four domains on a single server.
  • Thanks, Bobby!

    That’s definitively in the right direction.

    However, our case is more that we don’t know the ID or IP since we are spinning up Droplets to left and right based on customer demand.

    E.g. a customer starts a process, which loosely be translated to www.oursite.com/abc123. This would create a droplet which corresponds to the ID of abc123.

    We would need to route www.oursite.com/abc123 to the corresponding Droplet at either IP or abc123.oursite.com (this would need to be registered somehow internally in our environment).

    So, the Droplet in cloud-init or something similir would need to register with the reverse proxy that it’s ready to receive requests, and the reverse proxy would need to know that at location /abc123 it can find the Droplet by either IP or DNS-name.

    Would that kind of dynamic setup be possible with nginx reverse proxy?

    Thanks!

    Daniel

    • Hi there,

      In case that you need to automate the process, you could use a tool like Ansible or alternatively write a bash script to do the Nginx templating.

      When creating a Droplet via the DigitalOcean API you would get a response back with the Droplet ID which you could use to get the IP address and then use it to create the new Nginx configuration for the specific client.

      Hope that this helps.
      Regards,
      Bobby