IT/OS|Network|Script

node-red docker로 구축 및 nginx docker 연결

박모 2023. 10. 5. 22:57
728x90

node-red 컨테이너의 docker-compose.yml

메모리는 강제로 128m 정도로 줄여놓았다.

version: "3.3"

services:
  node-red:
    image: nodered/node-red:latest
    container_name: nodered
    volumes:
      - nodered_data:/data
    restart: always
    deploy:
      resources:
        limits:
          memory: 128m
    ports:
      - "1880:1880"
    restart: always
    deploy:
      resources:
        limits:
          memory: 128m
volumes:
  nodered_data: {}

nginx 컨테이너의 docker-compose.yml

아래 링크를 통해 구성: https://velog.io/@zero-black/Docker-compose-certbot-nginx-로-SSL-인증서-발급하기

 

Docker compose + certbot + nginx 로 SSL 인증서 발급하기

프로젝트에 https를 적용하는 과정에서 겪었던 오류에 대해 작성해두려고 한다.우선 내 프로젝트는 docker-compose를 통해 관리되고 있었고, 웹서버는 nginx를 활용하고 있다.https와 ssl 인증서에 관해

velog.io

 

nginx.conf 의 설정

server {
  listen 80;
  server_name example.com;

  location / {
    return 301 https://$host$request_uri;
  }
  location /.well-known/acme-challenge/ {
    allow all;
    root /var/www/certbot;
  }
}

server {
  listen 443 ssl;
  server_name example.com;

  ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
  include /etc/letsencrypt/options-ssl-nginx.conf;
  ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

  location / {
    proxy_pass http://nodered:1880;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "Upgrade";
  }
}

특이사항 설명

- 80 은 그냥 443 redirect용

- 443 쪽에 인증서는 위에 있는 링크를 참조하여 작성함. example.com 은 개인별 도메인으로 변경 할 것

  let's encrypt를 안쓰고 사설로 하거나 80 쓸거면 80쪽에 proxy_pass 관련 정보를 넣으면 된다.

- proxy_http_version 부터 그 아래가 중요한데,

   web_socket으로 통신하는 node-red의 경우 해당 설정을 통해 web_socket 통신을 nginx 에서 지원하게 해 줘야 하기 때문이다. (이 부분 때문에 한시간 가량을 찾는데 소비하였었음. 찾다가 잘 안나와서 살펴보니 웹소켓 문제라서 웹서켓 nginx에서 열어주는 방법을 찾아서 해결 함)

728x90