curl: (7) Failed to connect to 184.108.40.206 port 9898: Connection refused
I just created an Ubuntu droplet, I am able to ssh to this droplet without any problem. Deployed my API, API calls are success if I do curl with localhost:port.
However when I try to call the API from my personal laptop it fails. I am unable to ping droplet’s IP from my personal laptop. I searched various websites for possible answers, found few solutions stating enabling/disabling and allowing particular IP using “ufw” but that solution is not working. I even tried modifiying Firewall rules through Digital Ocean Control Panel to allow inbound traffic for tcp/udp/ssh/http/https/icmp from all IPv4 and IPv6 but it isn’t working either.
lsof -i :9898
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME R 231 root 15u IPv4 69259 0t0 TCP localhost:9898 (LISTEN)
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 22/tcp ALLOW Anywhere 80/tcp ALLOW Anywhere 443/tcp ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 22/tcp (v6) ALLOW Anywhere (v6) 80/tcp (v6) ALLOW Anywhere (v6) 443/tcp (v6) ALLOW Anywhere (v6)
Even disabled ufw but it is still not working
Deleted the Firewall rules from DigitalOcean Control Panel still no response.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
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.
Click below to sign up and get $200 of credit to try our products over 60 days!
@baraboom pointed out a critical issue in your API application. It must also listen on your droplet IP
220.127.116.11, not just
localhost. Please reconfigure your application or modify its source code.
Also, if you want to enable UFW, add a new rule to allow incoming connections to your API application:
By default, UFW allows ping requests. If for some reason you are unable to ping your droplet, read this Ubuntu wiki page to learn how to enable ping requests.
Hi! If you haven’t figured it out yet, you need to configure your service to bind to the IP address of the Droplet vs “localhost”
This line shows its only listening on localhost which is why your curl works:
The key part of that line is
localhost:9898, which is the “interface” and “port” combo.
To correct this, you can configure service via conf file or command flag when you start it to bind to the IP address of your droplet. When you’re done you should see something like
0.0.0.0:9898(for any interface) or
192.168.1.55:9898(whatever your Droplet IP is).
Hope this helps and if you’re still stuck, let us know what the underlying software is and we can see what is need to bind to the IP address.