0

I am getting following error when running search feature on my site (search feature makes api request to my api server):

2022/08/31 21:01:56 [error] 726#726: *23 connect() failed (111: Connection refused) while connecting to upstream, client: 11.111.111.111, server: api.mydomain.com, request: "GET /dividends/IBM/3/5 HTTP/1.1", upstream: "http://127.0.0.1:8001/dividends/IBM/3/5", host: "api.example.com", referrer: "example.com/"

The supervisord gunicorn is up, the mongodb is up, and nginx is up

I have the following /etc/nginx/sites-available/stocks_backend:

upstream stocks_backend {
    server 127.0.0.1:8001 fail_timeout=4s;
}

server {
    server_name api.example.com www.api.example.com;

    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /root/stocks_backend;
    }

    location / {
        include proxy_params;
        proxy_pass http://unix:/etc/systemd/system/gunicorn.socket;
        proxy_ssl_server_name on;
    }

    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/api.example.com/fullchain.pem; # managed by C>
    ssl_certificate_key /etc/letsencrypt/live/api.example.com/privkey.pem; # managed by>
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

server {
    if ($host = api.example.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    listen 80;
    listen [::]:80;
    server_name api.example.com www.api.example.com;
    return 404; # managed by Certbot

    access_log /root/stocks_backend/log/nginx-access.log;
    error_log /root/stocks_backend/log/nginx-error.log;
}

I have tried things from https://stackoverflow.com/questions/44046611/django-gunicorn-nginx-111-connection-refused-while-connecting-to-upstream but when I remove http:// from the proxy_pass to the socket to proxy_pass unix:/etc/systemd/system/gunicorn.socket; I get

nano /etc/nginx/sites-available/stocks_backend
root@my-droplet:~/stocks_backend# sudo service nginx restart
Job for nginx.service failed because the control process exited with error code.
See "systemctl status nginx.service" and "journalctl -xe" for details.

gunicorn socket

root@-droplet:~/stocks_backend# cat /etc/systemd/system/gunicorn.socket 
[Unit]
Description=gunicorn socket

[Socket]
ListenStream=/run/gunicorn.sock

[Install]
WantedBy=sockets.target
codyc4321
  • 103
  • 5

1 Answers1

0

You have specified different paths:

  • the socket you let systemd create for gunicorn is at /run/gunicorn.sock

  • the socket you told nginx to connect to is /etc/systemd/system/gunicorn.socket

The latter in inappropriate. /etc is for configuration, that is where the systemd configuration file lives - not where the socket that is created because of that configuration ends up. Change it, then nginx can connect (or will output a different message for whatever problem is the blocker after resolving this one).

anx
  • 8,963
  • 5
  • 24
  • 48