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-인증서-발급하기
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