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

January 2, 2016 56.5k 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
3 Answers

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 Justin Ellingwood
Nginx is one of the most popular web servers in the world. It is extremely flexible and powerful and can be used to efficiently host sites and applications small or large sites and applications. In this guide we'll cover how to install and set this up on an Ubuntu 14.04 server.
  • I love this answer!Solve my problems!

  • Hi Im facing the same problem, how to create "myapp"? What is the type of app? Im very new to ubuntu :'(

    • Hi @itzvarman , you can use whatever you like in place of myapp—it's just a generic placeholder I used in the config file. Usually you would replace it with your domain name

  • For the block
    location / {
    proxypass http://localhost:8080;
    proxy
    setheader Host $host;
    proxy
    setheader X-Real-IP $remoteaddr;
    proxysetheader X-Forwarded-For $proxyaddxforwardedfor;
    proxysetheader X-Forwarded-Proto $scheme;
    }
    Which values do you substitute in for
    1) $proxyaddxforwardedfor;
    2) $scheme;
    ?

    • @ewebxml Good question. You'll want to keep them as is and nginx will treat them as variables and substitute with the values of the current request that it's proxying. You can read more about what each of these variables does here: http://nginx.org/en/docs/varindex.html This page lists all nginx variables in alphabetical order.

      In the block I posted above, you only need to substitute the parts in red (myapp.domain.com and 8080) with your own

How can I do that without nginx? With .htaccess for instance?

If it says that there is IP not found, could this be a problem with the configuration of nginx or is this because of DNS configuration.

Have another answer? Share your knowledge.