How do I point my custom domain to my IP:Port (41.111.20.36:8080)?

January 2, 2016 8.3k views
Docker DNS Ubuntu

My word press app is working within a docker container with host port 8080 bound to the web container 80. I am able to access the app using the public IP with port 8080 (41.111.20.36:8080), but the app cannot be accessed using the only IP (41.111.20.36). Secondly, I have pointed my custom domain to digital servers and have matched the droplet and the domain name, I have even created a cname record pointing to that custom domain. But I am unable to access my application using the domain name, and I am unable to access it using the domainename:8080.... I assume I should be able to access the web container with only the domain name.... Am I missing something? Even inside the server, curl localhost triggers an error with the message, the server refused connection on port 80.... but curl localhost:8080 works fine. Any suggestions?

1 comment
1 Answer

Hi!

DNS only handles domain -> IP mapping. It cannot map the default port (80) to a custom port–you will have to use a reverse proxy for that. nginx is one of the most popular reverse proxies that are used to do that.

First, add a DNS record for your subdomain.

Then, install nginx:

Add a new server block:

/etc/nginx/sites-available/myapp
server {
    listen 80;
    server_name myapp.domain.com;

    location / {
        proxy_pass http://localhost:8080;
        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;
    }
}

Finally, enable it and restart nginx:

sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/myapp
sudo service nginx configtest
sudo service nginx restart

You should now be able to browse to http://myapp.domain.com and see the contents of http://your droplet's ip:8080.

by Etel Sverdlov
This article walks you through setting up the DNS for your site. The tutorial includes steps to set up an A records, point your nameservers, and provides some information about MX records.
Have another answer? Share your knowledge.