nginx 와 django app의 container를 분리 하기 위해 작업을 하던 중 발생한 이슈 상황과 해결 방법 정리

 

사용 docker compose file

version: "3.7"
services:
  nginx:
    container_name: web_server
    restart: on-failure
    image: nginx:stable
    volumes:
      - ${PWD}/etc/jnbdrive_nginx:/etc/nginx/sites-enabled/default
      - ${PWD}/etc/nginx.conf:/etc/nginx/nginx.conf:ro
      - ${PWD}/staticfiles:/home/nginx/www/static
    ports:
      - 80:80
    environment:
      DJANGO_HOST: django_app

  django_app:
     container_name: django_app
     build: .
     image: django_app:latest
     ports:
       - 8000:8000
     restart: always
     environment:
       DB_PORT: 3306
       DB_HOST_ADDRESS: mysql
     tty: true
     networks:
       - backend
     volumes: 
       - ${PWD}:/home/docker/workspace/django_app
     command: ./start_server.sh

networks:
  backend:
    # Use a custom driver
    driver: bridge

 

nginx 설정 파일

upstream app {
    server ${DJANGO_HOST}:8000;
}
server {
        listen 80;
        server_name 192.168.0.5; ##client 가 접속하는 도메인네임, 장고 app 의 서버 주소

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

        location /static {
                autoindex on;
                alias /home/nginx/www/static;
        }

        location / {
                include proxy_params;
                proxy_pass http:app;
        }
}

 

발생 문제

issue 1. wget 192.168.0.5  명령시 nginx server에서 proxy server 로 보내는 요청에 대해 timeout 발생

aws ec2 인스턴스에서 기본적으로 80번 포트를 막고 있기 때문에 발생하는 상으로 보안그룹 설정에서 인바운드 규칙 변경하면 해결 가능.

아래 페이지 참조 [aws] 인바운드 규칙 변경

 

[aws] 인바운드 규칙 변경

이 포스트는 aws ec2 인바운드 규칙 변경 방법을 정리한다. 상황: ec2 인스턴스에 nginx 서버를 띄우고 'wget my.ip.address' 로 통신 확인을 하니 응답이 오지 않고 timeout 이 발생해서 해결방법을 알아 보

pajamacoder.tistory.com

 

issue 2. proxy_params  파일 없음 에러

web_server                  | nginx: [emerg] open() "/etc/nginx/proxy_params" failed (2: No such file or directory) in /etc/nginx/sites-enabled/default:13

nginx:latest docker 이미지를 사용 했는데 이 도커 이미지에는 /etc/nginx/proxy_params 파일이 존재 하지 않기 때문에 발생한는 에러이다.

/etc/nginx/proxy_params 파일은 pip install nginx 로 설치할 경우 자동으로 생성되었는데 이 도커 이미지에는 없어서 아래 방법으로 파일을 container 에 마운트 했서 해결했다.

issue 2 해결 방안: docker compose volumes 에 ' - /path/to/proxy_params:/etc/nginx/proxy_params' 옵션 추가

 

- 끝 -

+ Recent posts