이전 블로그의 글을 보면 내부망용 dns용으로 Adguard를 쓴다고 얘기했었다.
이때 단순히 Adguard의 DNS 변경탭에서 Domain Name을 지정하고 서버 ip를 입력해도 하나의 서버(ip) 안에서 포트 번호만 다르 실행 중인 여러 서비스들을 Domain Name으로 구분할 수 없다.
예를 들어 192.168.0.10:1000에는 A라는 웹 서비스를, 192.168.0.10:2000에는 B라는 웹 서비스를 운영 중이라면, Adguard의 DNS 변경으로는 서비스를 구분하지 못하고 example.com:1000, example.com:2000 같이 꼭 뒤에 포트를 붙여 구분해야 한다.
ip숫자를 외우지 않기 위해 dns를 쓰지만 포트 번호는 외워야 한다는 점이 귀찮아진다.
Npm+Adguard를 통해 그 점을 막을 수 있다.
간단한 원리를 설명하자면 Adguard로 들어온 Domain을 npm의 ip로 지정하고 npm은 리버스 프록시의 역할을 하여 다시 Domain을 읽어 포트를 포함한 서비스에 보내주는 것이다.
물론 이 전 과정이 내부에서만 통신하기 때문에
설정은 매우 간단하다.
Adguard에 접속하여 필터-DNS 변경에서 자신이 설정하고 싶은 Domain Name 앞에 *를 붙여 와일드카드 방식으로 작동하게 하면 된다. (ex. *. example.com)
주로 실제 있는 도메인보다는 내부망이라는 느낌을 주는 단어로 설정하는 것을 추천한다.

아래의 ip주소에는 npm의 주소를 입력하면 된다.
이렇게 설정 시 Adguard에서는 새로운 서비스가 추가되어도 추가 설정할 필요가 없다.
하지만 npm은 새로운 서비스가 추가될 때마다 계속하여 추가 설정을 해야 한다.
npm에서는 Hosts에서 New proxy Host로 추가하면 된다.

이렇게 추가를 하게 되면 접속이 가능한 걸 알 수 있다.
접속이 불가한 상황은 2가지로 나눌 수 있는데
첫 번째는 자동으로 검색창으로 넘어가는 상황
이때는 http:// 또는 https:// 각자의 설정에 따라 붙여주면 된다.
두 번째는 서비스에서 도메인접근을 막는 경우이다.
CUPS나 OPNSENSE 등은 보안상의 이유로 막는다.
그래서 따로 설정을 해서 바꿀 수는 있지만 보안상의 이유로 추천은 하지 않는다.
또한 사용하는 기기에서 dns를 Adguard로 바꾸거나 라우터에서 dns를 내부 dns로 바꿔야 한다.
하지만 이러한 단점을 상쇄할 너무나 큰 편리함이 있기 때문에 보안적인 설정이 잘 되어있다면 이러한 설정을 하는 것을 추천한다.
'Nginx(Npm)' 카테고리의 다른 글
| Nginx(NPM)은 왜 쓰는걸까? (0) | 2025.11.15 |
|---|---|
| NPM를 통한 접속 로그 실시간으로 알림 받기 (0) | 2025.11.14 |
| NPM에 Cloudflare Proxy를 통한 클라이언트 실제 IP 확인 방법 (0) | 2025.11.13 |