주소를 몇 개 만들고, 각각 무엇을 하며, 무엇을 받아야 하는지
발주사 전달용 · 2026-08-12 기준 (코드·nginx 설정·DNS 조회 실측)모든 주소 앞에 npwp- 를 붙입니다(발주사 확정). 테스트는 npwp-t 입니다.
서버를 주소마다 나누지 않습니다 — WEB 서버의 nginx 하나가 주소를 보고 갈라 줍니다.
| 주소 | 운영 | 테스트 | 하는 일 | 지금 DNS |
|---|---|---|---|---|
| api | npwp-api.nestpay.co.kr | npwp-tapi.nestpay.co.kr |
회원앱·매장앱이 부르는 API. 발주사가 보내는 결과 통지(웹훅)도 여기로 받습니다. | 없음 — 생성 필요 |
| pg | npwp-pg.nestpay.co.kr | npwp-tpg.nestpay.co.kr |
외부 쇼핑몰(매장 서버)이 붙는 결제 연동 전용 입구. | 없음 — 생성 필요 |
| admin | npwp-admin.nestpay.co.kr | npwp-tadmin.nestpay.co.kr |
운영자가 쓰는 관리자 화면과 그 화면이 부르는 API. | 없음 — 생성 필요 |
| www | 보류 — 기존 사이트 사용 여부 확인 중 | 회사·앱 소개 페이지. 기존 www.nestpay.co.kr 을 그대로 쓰실 수 있어 결정을 기다립니다.
새로 만들 경우 npwp-www·npwp-twww 2개가 추가됩니다. |
기존 사이트 있음 | |
nestpay.co.kr(112.175.152.168) · www(112.175.152.168) ·
api(112.175.152.167) · tapi(211.47.2.151) 입니다.
npwp- 로 시작하는 주소는 하나도 없습니다.
위 표의 6개를 새로 만들어야 하며, 만들기 전에는 앱도 매장 연동도 관리자 화면도 외부에서 접속할 수 없습니다.api.nestpay.co.kr·tapi.nestpay.co.kr 는
발주사의 기존 결제 시스템이 이미 쓰고 있습니다. 접두사를 붙이면 이름이 겹치지 않아,
같은 도메인 안에서 우리 서비스의 주소임을 이름만 보고 구분할 수 있습니다.
이 규칙은 발주사 요구사항이며 필수입니다.주소마다 들어올 수 있는 사람과 열리는 문이 다르기 때문입니다. 하나로 합치면 외부 쇼핑몰이 관리자 기능에 닿을 수 있게 되고, 실수 하나가 사고로 이어집니다.
| 주소 | 누가 들어오나 | 열려 있는 문 | 그 밖의 경로 |
|---|---|---|---|
| npwp-api | 우리 앱(회원·매장) · 발주사 서버 | /app/** /store/** /webhooks/vendor/**
/health /developer | 모두 404 |
| npwp-pg | 외부 쇼핑몰 서버 | /pg/** /health /developer | 모두 404 |
| npwp-admin | 운영자(사내 IP) | 관리자 화면(정적) · /api/** → 백엔드 /admin/** ·
/health · /developer | 모두 404 |
열지 않은 경로는 아예 없는 것처럼 응답합니다. 관리자 API 가 공개 주소로 새지 않게 하는 장치입니다.
같은 주소지만 응답하는 주체가 다릅니다. nginx 가 경로를 보고 갈라, 화면 파일은 자기가 직접 주고
/api/** 만 자바 서버로 넘깁니다.
주소를 나누면 브라우저가 서로 다른 출처로 보아 CORS 설정이 필요해지고, 관리자 토큰을
출처 너머로 실어 보내야 해서 위험이 커집니다. 같은 주소로 두면 그 문제가 아예 생기지 않습니다.
그래서 npwp-admin-api 같은 별도 주소는 만들지 않습니다.
발주사 확정 구조입니다. 바깥에서 닿는 것은 WEB 서버뿐이고, 업무 처리와 데이터는 폐쇄망 안에 있습니다.
[ 인터넷 · 외부 쇼핑몰 · 발주사 서버 ]
│
┌───────┴───────┐
│ L4 로드밸런서 │ /health 로 각 WEB 서버 생사 확인
└───────┬───────┘
┌───────────┴───────────┐ ← 공개망(DMZ)
┌───┴────┐ ┌────┴───┐
│ WEB #1 │ ··· 동일 ···│ WEB #2 │ nginx — 주소(npwp-api·pg·admin)를 보고 갈라 줌
└───┬────┘ └────┬───┘ 관리자 화면 등 정적 파일도 여기서 직접 응답
└───────────┬───────────┘
┌───────────┴───────────┐ ← 폐쇄망 (외부에서 직접 접속 불가)
┌───┴────┐ ┌────┴───┐
│ WAS #1 │ ··· 동일 ···│ WAS #2 │ 자바 API — 업무 처리
│ 공유폴더│◀── 마운트 ──│ │ 파일 실물은 WAS #1 의 폴더를 두 대가 함께 바라봄
└───┬────┘ └────┬───┘
└───────────┬───────────┘
┌───┴───┐
│ DB │ MariaDB (1대)
└───────┘
각 주소의 /developer 하나로 들어갑니다. 그 주소에서 실제로 부를 수 있는 API 만 설명합니다 —
부를 수 없는 API 를 보여 주면 오히려 헷갈리기 때문입니다.
| 주소 | 문서 | 내용 · 공개 범위 |
|---|---|---|
npwp-pg…/developernpwp-tpg…/developer |
외부 쇼핑몰 연동 가이드 (8개 API) |
결제 흐름 · HMAC 서명 · 웹훅 · 연동 테스트 4종 통과 조건 · AI 에이전트로 연동할 때 쓰는 프롬프트. 인터넷 공개 |
npwp-api…/developernpwp-tapi…/developer |
앱 API 가이드 (회원앱 71 · 매장앱 34) |
서버 규격에서 자동 생성 — 코드가 바뀌면 문서도 함께 바뀝니다. 규격 원문(Swagger)은 사내 IP 전용 |
npwp-admin…/developernpwp-tadmin…/developer |
관리자 API 규격 (176개) |
관리자 화면 우측 상단 [개발자 센터] 버튼으로도 열립니다. 사내 IP 전용 |
테스트 주소로 들어오면 문서 맨 위에 “테스트 서버” 띠가 뜨고, 문서 안의 기준 주소도 그 서버 기준으로 바뀝니다. 개발자가 운영·테스트를 헷갈려 열쇠를 잘못 쓰는 사고를 막기 위한 것입니다.
모든 주소에 두 경로가 있습니다.
/health — L4 가 보는 경로입니다. WEB 서버가 직접 답하므로 WAS 장애 시에도 200 입니다./health/was — WAS 까지 살아 있는지 확인합니다. 운영자·모니터링용입니다./health 가 WAS 까지 확인하면, WAS 두 대가 모두 죽었을 때
멀쩡한 WEB 까지 L4 가 빼 버려 “점검 중” 안내조차 띄우지 못하고 전면 중단됩니다.
WAS 장애는 nginx 가 알아서 죽은 서버를 빼 줍니다.| # | 항목 | 내용 |
|---|---|---|
| 1 | DNS A레코드 6개 | 운영 npwp-api · npwp-pg · npwp-admin /
테스트 npwp-tapi · npwp-tpg · npwp-tadmin.
모두 WEB 서버(L4) 를 가리키면 됩니다. 이것이 없으면 아무것도 접속되지 않습니다. |
| 2 | WAS 서버 정보 | WAS 2대의 내부 IP 와 8080 포트 개방(WEB → WAS 방향). WEB 서버 2대의 IP 도 알려 주셔야 합니다 — 그 IP 를 믿어야 실제 사용자 IP 를 판별할 수 있습니다. |
| 3 | 웹훅 발신 IP | 발주사가 결과를 보낼 때 쓰는 IP(운영·테스트). 지금은 아무 곳에서도 못 보내게 막아 둔 상태라,
IP 를 받아야 본인인증 결과와 출금 결과를 받을 수 있습니다.
받는 주소: https://npwp-api.nestpay.co.kr/webhooks/vendor/identity ·
…/webhooks/vendor/transfer (테스트는 npwp-tapi) |
| 4 | 입금 통지 양식 | 보내 주실 항목(JSON 필드)·서명 방식·재발송 정책. 받는 즉시 /webhooks/vendor/ 아래에
창구를 만들겠습니다. 양식을 모르면 만들 수 없어 대기 중입니다. |
| 5 | SSL 인증서 | 보유하신 와일드카드 *.nestpay.co.kr 1장으로 위 6개 주소가 모두 커버됩니다
(전부 점 하나짜리 서브도메인이라 추가 발급이 필요 없습니다).
중간 CA 를 포함한 인증서와 개인키, 그리고 만료 시 갱신 절차. |
| 6 | 사내 접속 IP | 관리자 화면과 내부 API 규격에 들어올 수 있는 사무실·VPN IP. 검수 담당자가 사외에서 규격을 보셔야 하면 그 IP 도 함께 주세요. 관리자 화면에서 직접 등록·변경하므로 코드 수정은 필요 없습니다. |
| 7 | www 사용 여부 | 회사·앱 소개 페이지를 기존 www.nestpay.co.kr 로 유지하실지,
우리가 만든 것으로 교체하실지 알려 주세요. 교체 시 주소 2개가 추가됩니다. |
| 8 | 정적 파일 배포 방법 | 관리자 화면 파일을 WEB 2대에 어떻게 올릴지(각각 전송 / 공유 폴더). 두 대의 파일이 다르면 화면이 번갈아 나옵니다. |