NGINX, Docker-Compose, SSL Reverse Proxy Has failed (111: Connection refused)

Viewed 155

I'm trying to get a docker-compose to use a nginx reverse proxy for ssl. I've looked at several different tutorials online, and the below is the best approximation of the answer. However, I am getting a 502 Bad Gateway Error and the following error in nginx. I'm not sure why. https seems to work (as it routes to the Error page), but I don't know what else is happening here. Any ideas?

production_nginx | 2021/01/12 02:54:34 [error] 29#29: *1 connect() failed (111: Connection refused) while connecting to upstream, client: <IP_ADDRESS_HERE>, server: www.websiteunderdevelopment.com, request: "GET / HTTP/1.1", upstream: "http://172.21.0.4:3001/", host: "www.websiteunderdevelopment.net"

Here is the docker container -

version: "3.3"
services:
  nginx:
    image: nginx:latest
    container_name: production_nginx
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
      - ./error_log:/etc/nginx/error_log.log
      - ./nginx/cache/:/etc/nginx/cache
      - /etc/letsencrypt/:/etc/letsencrypt/
    ports:
      - 80:80
      - 443:443
    depends_on:
      - blog
      - api
      - db
  blog:
    container_name: blog
    build: ./blog
    ports:
       - 3001:3000
    expose:
       - "3000"
       - "3001"
       - "80"
    depends_on:
      - api
  api:
    container_name: api
    build: ./api
    restart:  always
    ports:
      - 4001:4000
    expose:
      - "4000"
      - "4001"
    depends_on:
      - db
    command: ["./wait-for-it.sh", "http://localhost:3306", "--", "npm", "start"]
    volumes:
      - ./api:/var/lib/api
  db:
    container_name: db
    build: ./db
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    ports:
      - "3306:3306"
    environment:
      - MYSQL_ALLOW_EMPTY_PASSWORD=True
      - MYSQL_DATABASE=blog
      - MYSQL_USER=SUFUPDFD      
      - MYSQL_ROOT_PASSWORD=NEST
      - MYSQL_PASSWORD=SUPERSECCRETT
    volumes:
      - db_data:/var/lib/mysql
volumes:
  db_data: {}

Here is my nginx file -

events{}


http{
 server {
    listen 80;
    listen 443 ssl;
    server_name  www.websiteunderdevelopment.com websiteunderdevelopment.com;
    ssl_certificate /etc/letsencrypt/live/www.websiteunderdevelopment.net/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/www.websiteunderdevelopment.net/privkey.pem;

    location / {
       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-Host $host:443;
       proxy_set_header X-Forwarded-Port 443;
       proxy_set_header X-Forwarded-Server $host;
       proxy_set_header X-Forwarded-Proto https;
       proxy_pass http://blog:3001/;
    }

    location /api {
       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-Host $host:443;
       proxy_set_header X-Forwarded-Port 443;
       proxy_set_header X-Forwarded-Server $host;
       proxy_set_header X-Forwarded-Proto https;
       proxy_pass http://api:4001/;
    }
 }
}
0 Answers
Related