- 공유 링크 만들기
- X
- 이메일
- 기타 앱
시놀로지 NAS에서 역방향 프록시를 설정했는데 500 또는 502 에러가 발생한다면, 대부분 대상(Target) 설정 오류 또는 도커 컨테이너 네트워크 문제입니다. 이 글에서는 DSM 역방향 프록시 설정 전체 프로세스와 웹 서버 에러 트러블슈팅 방법을 실전 중심으로 정리했습니다. 포트포워딩 환경까지 고려한 완전한 가이드를 제공합니다.
| 시놀로지역방향프록시500 502에러완벽해결가이드 |
1. DSM 역방향 프록시 기본 설정 흐름
시놀로지 DSM에서 역방향 프록시를 설정하면 포트 번호 노출 없이 서브도메인으로 서비스에 접근할 수 있습니다. 설정 위치와 절차는 다음과 같습니다.
- 제어판 → 로그인 포탈 → 고급 탭 → 역방향 프록시 메뉴로 이동
- "생성" 버튼 클릭 후 아래 항목 입력:
- 역방향 프록시 이름: 규칙 구분용 이름 (예: webdav_https, dsm_proxy)
- 소스(Source)
- 프로토콜: HTTPS 권장
- 호스트 이름: 클라이언트가 접근할 도메인 (예: dsm.test.synology.me)
- 포트: 443 (HTTPS) 또는 80 (HTTP)
- 대상(Destination)
- 프로토콜: 실제 서비스가 사용하는 프로토콜 (HTTP/HTTPS)
- 호스트 이름: localhost 또는 127.0.0.1 (NAS 내부 서비스) / 도커 컨테이너는 컨테이너 IP 또는 bridge 네트워크 게이트웨이
- 포트: 실제 서비스 포트 (예: DSM 5000/5001, Video Station 9006 등)
- HSTS(HTTP Strict Transport Security) 옵션 반드시 체크 → HTTP 접속을 HTTPS로 강제 리다이렉트
- 저장 후 적용
핵심 주의사항:
- 응용 프로그램 포탈에 등록된 서비스(DSM, Video Station 등)는 응용 프로그램 편집 → 도메인에서 역방향 프록시 도메인을 직접 입력 가능
- WebDAV, 도커 컨테이너 등 목록에 없는 서비스는 역방향 프록시 규칙 수동 생성 필요
- HTTP/HTTPS 프로토콜별로 규칙을 분리해 생성하면 관리가 명확해짐
2. 500/502 에러 트러블슈팅: 대상 설정 검증
역방향 프록시 설정 후 502 Bad Gateway 또는 500 Internal Server Error가 발생하는 경우, 99%는 대상(Destination) 설정 문제입니다.
2-1. 도커 컨테이너 대상 설정 시 오류
도커 컨테이너를 대상으로 할 때 localhost:포트로 설정하면 연결 실패합니다. 이유는 컨테이너가 독립된 네트워크 네임스페이스에서 동작하기 때문입니다.
해결 방법:
- SSH로 NAS에 접속:
ssh synology-id@domain -p port - 컨테이너 네트워크 정보 확인:
docker inspect <컨테이너명> | grep IPAddress
→ 컨테이너의 내부 IP (예: 172.17.0.2) 확인 - 역방향 프록시 대상 호스트를 컨테이너 IP로 변경
- 또는 도커 실행 시 호스트 네트워크 모드(--network host) 사용:
docker run -d --network host --name myapp image_name
→ 이 경우 localhost:포트로 접근 가능
2-2. 프로토콜 불일치 문제
- 소스는 HTTPS(443)인데 대상을 HTTP(5000)로 설정 → 정상 동작
- 소스는 HTTP(80)인데 대상을 HTTPS(5001)로 설정 → 인증서 검증 실패 가능
- 권장: 소스는 HTTPS, 대상은 서비스 실제 프로토콜(대부분 HTTP)로 설정
2-3. 방화벽 및 포트 리스닝 상태 확인
대상 서비스가 실제로 해당 포트에서 리스닝 중인지 확인:
netstat -tuln | grep <포트번호>- 도커 컨테이너:
docker logs <컨테이너명>으로 시작 로그 점검 - DSM 방화벽 규칙에서 해당 포트 허용 여부 확인 (제어판 → 보안 → 방화벽)
3. 다중 공유기 환경에서 포트포워딩 설정
역방향 프록시를 외부에서 접근하려면 라우터에서 443 포트를 NAS로 포트포워딩해야 합니다. 다중 공유기 환경에서는 모든 경로에 포워딩을 설정해야 합니다.
3-1. 단일 공유기 환경
- 공유기 관리 페이지 접속
- 포트포워딩 메뉴에서 새 규칙 생성:
- 외부 포트: 443
- 내부 IP: NAS 고정 IP (예: 192.168.0.100)
- 내부 포트: 443
- 프로토콜: TCP
- NAS에 고정 IP 할당 또는 DHCP 예약 설정
3-2. 다중 공유기 환경 (공유기1 → 공유기2 → NAS)
이 경우 모든 공유기에서 포워딩 체인을 구성해야 합니다.
- 공유기1 (외부망 연결)
- 외부 포트 443 → 공유기2의 WAN IP:443으로 포워딩
- 공유기2의 WAN IP는 공유기1의 ARP 테이블 또는 DHCP 할당 목록에서 확인
- 공유기2 (내부망)
- 외부 포트 443 → NAS 내부 IP:443으로 포워딩
- NAS에 고정 IP 할당
- 테스트: 모바일 데이터(와이파이 끔)로 https://도메인 접속
주의사항:
- 내부망에서는 공인 IP로 테스트 불가 → yougetsignal.com 같은 외부 포트 체커 또는 모바일 데이터 사용
- LGU+ 등 일부 ISP 제공 공유기는 포트포워딩 기능이 잠겨 있음 → 개인 공유기 추가 설치 또는 브리지 모드 전환 필요
- 설정 후 반드시 저장/적용 버튼 클릭
4. SSH를 통한 도커 컨테이너 관리 및 볼륨 매핑
역방향 프록시 대상이 도커 컨테이너인 경우, SSH로 직접 접속해 컨테이너 상태를 점검하는 것이 가장 빠릅니다.
4-1. 기본 도커 명령어
- 컨테이너 목록 확인:
docker ps(실행 중) /docker ps -a(전체) - 컨테이너 접속:
docker exec -it <컨테이너명> /bin/sh또는/bin/bash - 로그 확인:
docker logs <컨테이너명>(실시간:-f옵션) - 컨테이너 재시작:
docker restart <컨테이너명> - 이미지 목록:
docker images
4-2. NAS 폴더와 볼륨 매핑
도커 컨테이너 데이터를 NAS 폴더에 영구 저장하려면 -v 옵션으로 볼륨 매핑이 필요합니다.
예시:
docker run -d --name myapp \
-v /volume1/docker/myapp:/app/data \
-p 8080:80 \
image_name
- /volume1/docker/myapp: NAS의 절대 경로 (공유 폴더 경로)
- /app/data: 컨테이너 내부 경로
- 권한 문제 발생 시: NAS 공유 폴더의 소유자/그룹 권한을 docker 사용자 또는 관리자로 설정
권한 설정 예시:
- DSM 제어판 → 공유 폴더 → 편집 → 권한 탭에서 사용자 권한 부여
- 또는 SSH에서:
sudo chown -R 1026:100 /volume1/docker/myapp(1026은 DSM의 기본 사용자 UID)
마무리
시놀로지 역방향 프록시는 소스(클라이언트 접근 도메인)와 대상(실제 서비스 위치)을 정확히 구분해 설정하는 것이 핵심입니다. 500/502 에러는 대부분 대상 호스트 IP 오류 또는 프로토콜 불일치에서 발생하며, 도커 컨테이너의 경우 docker inspect로 실제 IP를 확인해야 합니다. 다중 공유기 환경에서는 모든 포워딩 경로를 체인으로 연결하고, 테스트는 반드시 외부망(모바일 데이터)에서 수행하십시오.
Action Item: 지금 당장 SSH로 NAS에 접속해 docker ps와 docker inspect 명령으로 컨테이너 IP를 확인하고, 역방향 프록시 대상 호스트를 수정하십시오. HSTS 옵션을 활성화하고 라우터 포트포워딩 규칙을 점검하면 대부분의 접속 문제가 해결됩니다.
# 함께 보면 좋은 글
댓글
댓글 쓰기