가능합니다. 다만 그대로는 외부에서 접근이 안 됩니다.
아래에서 개념을 정리해 드릴게요.
✔️ 결론
index.html은 공인 IP 서버(예: 123.123.123.123)에 있고,
main.html은 내부 사설 IP 서버(예: 192.168.0.3)에 있어도 구조적으로 연결은 가능합니다.
그러나 외부 사용자는 192.168.0.3/main.html에 직접 접근할 수 없습니다.
사설 IP(192.168.x.x)는 인터넷에서 보이지 않기 때문입니다.
그래서 다음 중 한 가지 방식으로 처리해야 합니다.
✔️ 방법 1) Reverse Proxy (가장 일반적이고 정석)
index.html이 있는 메인 서버에서 내부 서버(192.168.0.3)를 대신 호출해주는 방식
예)
외부 사용자 접속 URL
https://example.com/main.html
Nginx 설정 (예시)
location /main.html { proxy_pass http://192.168.0.3/main.html; }
➡️ 그러면 실제 파일은 192.168.0.3에 있어도
외부에서는 같은 도메인으로 자연스럽게 접근됩니다.
✔️ 방법 2) Apache/Nginx에서 서버 분기 라우팅
메인 서버에서 특정 경로를 내부 서버로 넘기는 것.
예)
https://example.com/app/** → 192.168.0.3/app/**
역시 reverse proxy로 구현됩니다.
✔️ 방법 3) iframe으로 내부 서버 페이지를 끌어오기
가능은 하나 요즘은 보안(CORS, X-Frame-Options) 때문에 비추천.
<iframe src="http://192.168.0.3/main.html"></iframe>
하지만 외부 사용자는 사설 IP에 접근할 수 없기 때문에
서버가 내부망에 있으면 iframe은 외부에서 안 보임 → 실패.
✔️ 정리
방식 가능 여부 설명
| 외부에서 바로 192.168.0.3/main.html 접근 | ❌ 불가능 | 사설 IP는 인터넷에서 접근 불가 |
| index.html → 내부 서버로 직접 링크 | ❌ 동작 안 함 | 외부에서 내부 IP가 보이지 않음 |
| Reverse Proxy(Nginx/Apache) | ⭕ 정상적으로 동작 | 가장 일반적인 실무 방식 |
| iframe | △ 내부망이면 실패 | 보안 정책 때문에 제한 |
✔️ 추천 구성도 (실무에서 100% 이렇게 함) [외부 사용자] | v (공인IP 서버) index.html reverse proxy | v 192.168.0.3 서버 main.html
필요하시면 Nginx, Apache, 또는 Node.js 기반 Reverse Proxy 설정을 예제로 바로 만들어 드릴까요?