Digitalocean err_connection_refused generally happens as a result of a missing log file or firewall blocks.
Here at Ibmi Media, as part of our Server Management Services, we regularly help our Customers to perform related DigitalOcean queries.
Recently one of our customers went ahead to power off the droplet to do a snapshot. However, while accessing the site, he came across:
ERR_CONNECTION_REFUSED
Initially, we check the power-up state using the Digitalocean dashboard. In addition, we use the Digitalocean console to check the boot messages.
Then we check the status of the Nginx service:
# service nginx status
We also try to restart the Nginx service:
# service nginx restart
At times, we may receive the error:
*Restarting nginx nginx [fail]
To check the Nginx configuration, we execute:
$ sudo nginx -t
Then we will receive:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx [emerg] open() “/var/log/nginx/mysitename/access.log” failed (2: No such file or directory)
nginx: configuration file /etc/nginx/nginx.conf test failed
The main cause of this SSH Connection refused in DigitalOcean error can be:
1. Create an empty log file.
To do so, we login to the server as root and execute:
# touch /var/log/nginx/mysitename/access.log
If it fails, the intervening directory will not be present.
We create and change ownership and permissions for Nginx to use:
# mkdir -p /var/log/nginx/mysitename
To set the correct ownership and permissions, we use chown and chmod commands.
2. Check whether we can access the site from the server using curl or wget.
We need to open ports 80 and 443 in the firewall. In addition, we set it in the Nginx configuration file.
Initially, we check the status of port 443 in the server using the netstat command:
netstat -plan | grep :443
On finding it closed, we open port 443 in the firewall. Make note that different firewalls follow different commands to open a port.
For instance, to open port 443 in iptables, we use:
iptables -A INPUT -p tcp –dport 443 -j ACCEPT
Similarly, in the CentOS server, to open port in firewalld, we use:
firewall-cmd –permanent –zone=public –add-port=443/tcp
Next, we edit the Nginx configuration file /etc/nginx/nginx.conf and add:
listen 443 ssl http/2 default_server;
listen [::]:80 default_server;
It will add 443 as the listening port in the Nginx server and enables HTTPS connections.
Finally, when Nginx listens on port 443, it will look like this:
[root@xxx ~]# netstat -lpan | grep :443
tcp 0 0 1xx.2x.111.23:443 0.0.0.0:* LISTEN 11978/nginx
tcp 0 0 1xx.2x.111.22:443 0.0.0.0:* LISTEN 11978/nginx
tcp 0 0 1xx.2x.111.19:443 0.0.0.0:* LISTEN 11978/nginx
We ensure that the service listens on 0.0.0.0 instead of 127.0.0.1 (localhost). We can set it in /etc/nginx/nginx.conf file.
This article covers methods to resolve DigitalOcean error. SSH service uses sshd daemon to listen to the incoming connections and handles user authentication, terminal connections, and many more. If this service crashes, the connection fails, and results in SSH Connection refused error in DigitalOcean servers.
To fix this error, start by identifying and researching on the root cause of service failures.
The reasons can be traffic impales, disk errors, resource breakdowns, DDoS attacks, and many more.
Sometimes the backend service fails or doesn't respond.
In this case, we kill the dead process and restart the service.
For example, In CentOS 7 droplet, we restart the SSH service using the below command:
$ systemctl restart sshd