원본에서는 작동하는 로컬 리버스 프록시 구성을 구현했습니다. ZimaOS 대시보드를 포트 80에서 다른 포트로 옮기고, 포트 80/443을 리버스 프록시에 할당한 다음, 로컬 DNS 레코드를 생성하고, Nginx 프록시 대상이 ZimaOS 서버의 고정 LAN IP와 각 앱의 실제 포트를 가리키도록 했습니다.
핵심 설계는 DNS 루프를 피하는 것이었습니다. 사용자의 Bind9 레코드는 food.sdak 같은 이해하기 쉬운 이름을 제공했지만, Nginx 업스트림 대상은 호스트 이름을 다시 자체 프록시로 보내는 대신 ZimaOS의 고정 IP(예: 10.66.66.30:9925)로 유지했습니다.
포트 80에서 ZimaOS WebUI 이동
원본에서 사용자는 ZimaOS WebUI를 포트 83으로 변경했습니다. 정확한 대체 포트는 중요하지 않지만, 사용되지 않는 포트를 선택하고 기록해 두어야 합니다.
변경한 후에는 먼저 직접 접속을 확인하세요.
http://ZIMA_LAN_IP:83
새로운 직접 대시보드 URL이 작동하기 전에는 Nginx를 추가하지 마세요.
포트 443도 동일한 계획이 필요할 수 있음
커뮤니티 답변에서는 ZimaOS의 HTTPS 설정이 개발자 모드 아래에 있으며, 포트 443을 사용하려는 리버스 프록시와 충돌할 수 있다고 설명했습니다. 둘 다 활성화하기 전에 어느 서비스가 포트 443을 사용할지 결정하세요.
Nginx가 HTTPS를 종료한다면, 보안 모델상 양쪽 구간에 TLS가 필요한 경우가 아니라면 백엔드는 LAN에서 비공개 HTTP로 유지할 수 있습니다.
리버스 프록시 대상에 안정적인 LAN IP 사용
원본 사용자는 ZimaOS 호스트에 고정 IP를 할당하고 Nginx 업스트림 설정에서 해당 주소를 사용했습니다. 현재 ZimaOS에서는 설정 → 네트워크에서 DHCP 또는 수동 고정 네트워크 구성을 지원합니다.
현재 ZimaOS 고정 IP 설정 방법을 참조하세요.
이해하기 쉬운 이름을 위한 로컬 DNS 레코드 생성
홈 네트워크 전용 DNS 네임스페이스의 경우 가능하면 일반 유니캐스트 DNS에 .local을 사용하지 마세요. 이 접미사는 일반적으로 mDNS에 사용되기 때문입니다. 실제 내부 도메인이나 의도적으로 관리하는 다른 로컬 네임스페이스를 사용하세요.
Nginx가 IP:포트 백엔드를 가리키도록 설정
이렇게 하면 동일한 프록시 내부에서 공용 또는 이해하기 쉬운 호스트 이름을 확인하다가 트래픽이 다시 프록시로 들어가는 문제를 방지할 수 있습니다.
대화형 앱을 위해 WebSocket/Upgrade 트래픽 유지
ZimaOS와 많은 셀프 호스팅 앱은 장시간 유지되는 WebSocket 또는 HTTP 업그레이드 연결을 사용합니다. 리버스 프록시가 필요한 업그레이드 헤더를 전달하지 않으면 페이지는 정상적으로 표시되더라도 실시간 위젯이나 앱 대화상자가 작동하지 않을 수 있습니다.
필요한 애플리케이션에는 적절한 Nginx/Nginx Proxy Manager WebSocket 지원을 사용하세요.
로컬 DNS에는 공용 인터넷 노출이 필요하지 않음
원본의 목표는 NAS를 인터넷에 공개하는 것이 아니라 로컬에서 편리하게 사용하는 것이었습니다. 외부 액세스를 인증, 인증서, 방화벽 규칙 및 적절한 위협 모델과 함께 의도적으로 설계한 경우가 아니라면 프록시 리스너와 DNS 레코드를 신뢰할 수 있는 네트워크로 제한하세요.
원본에서는 재부팅으로 ARP/상태 문제가 해결되었지만, 핵심 설정은 아님
사용자는 포트를 변경한 후 ZimaOS와 IPFire를 모두 재부팅했으며, 오래된 ARP/네트워크 상태가 정리되었다고 보고했습니다. 이는 원본 환경에 특화된 정리 작업일 뿐, 모든 프록시 변경 후에 필요한 일반적인 절차는 아닙니다.
Nginx 리버스 프록시 FAQ
원본에서는 ZimaOS WebUI 포트를 어디에서 변경했나요?
설정 → 일반.
원본에서는 왜 고정 IP를 Nginx 대상 주소로 사용했나요?
DNS/프록시 루프를 방지하고 백엔드 대상을 확정하기 위해서입니다.
로컬 리버스 프록시 이름을 인터넷에 공개해야 하나요?
아니요. 전체 구성을 로컬 DNS와 함께 LAN 내부에 유지할 수 있습니다.
