공인 아이피 1개,  포트 1개, 도메인으로 여러 대의 웹서버를 운영하는 방법입니다.

공인 아이피가 1개 있는 상태에서 웹서버를 여러 대 운영하려면 보통 포트 번호를 달리하는 방법을 사용합니다.
아래처럼 말이죠..

https://isulnara.com/
https://isulnara.com:8080/
https://isulnara.com:8081/

그런데 사용할 수 있는 포트가 1개 밖에 없다면 어떻게 해야 할까요?
저같은 경우 회사 네트웍 관리자에게 부탁해 제가 사용하는 NAS의 80, 2222번 포트를 오픈할 수 있었습니다.
현재 웹서버 운영을 위해 추가 포트를 열어달라고 할 수 없는 상황입니다. 이런 상황에서 80포트 하나를 이용하여 사내의 여러 웹서버를 외부에서도 접속할 수 있는 방법이 필요했습니다.

넷하드 카페의 키리님의 도움으로 아파치 Proxy 모듈이 있다는 것을 알았습니다.

Proxy라는 이름에서도 알 수 있듯이.. HTTP 요청을 받으면 Proxy 모듈에서 해당 서버로 요청(request)을 하고 응답(response)을 받은 후 다시 클라이언트에게 그 응답(response)을 넘겨주는 방식입니다.

아파치 설정

1. 모듈 설정

– ds209+II의 경우: /usr/syno/apache/conf/httpd.conf-user

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

….

# Virtual hosts
Include conf/extra/httpd-vhosts.conf

당연히 아파치 modules 폴더에 mod_proxy.so와 mod_proxy_http.so가 있어야 됩니다.
ds209+II의 경우 제가 컴파일한 파일이 있으니 받아서 사용하면 됩니다.
– ds209+II용(Apache/2.2.8) 모듈 받기: mod_proxy.so, mod_proxy_http.so
– 다른 모듈도 함께 올려두었습니다(https://nas.fft.kr/bloc/DS-209plusII/apache/modules/)

2. 가상 호스트 설정

– ds209+II의 경우: /usr/syno/apache/conf/extra/httpd-vhosts.conf

<VirtualHost *>
ServerName s1.isulnara.com

ProxyPass         /    http://192.168.0.2:8080/
ProxyPassReverse  /    http://192.168.0.2:8080/
</VirtualHost>

3. 아파치 재시작

– ds209+II의 경우: /usr/syno/etc/rc.d/S97apache-user.sh restart

이제 http://s1.isulnara.com으로 접속하면 공유기 또는 방화벽 내의 외부로 오픈되지 않은 웹서버에 접근할 수 있습니다.

*. ds106e의 가장 최신 펌웨어를 설치한 PPC 계열의 CPU를 사용하는 ds101g+(Apache/2.2.8)에서도 동작됨을 확인하였습니다.