NAT 라우터를 통해 다른 호스트 이름을 다른 내부 IP로 전달

NAT 라우터를 통해 다른 호스트 이름을 다른 내부 IP로 전달

공용 IP 주소 1개, 라우터 1개, 라우터 뒤에 여러 서버가 있습니다.

라우터를 통해 다른 도메인(모두 HTTP 사용)을 다른 서버로 전달하고 싶습니다.

예를 들어:

example1.com      =>  192.168.0.110
example2.com      =>  192.168.0.120
foo.example2.com  =>  192.168.0.130
bar.example2.com  =>  192.168.0.140

포트 전달을 사용하여 이 작업을 수행할 수 있다는 것을 이해하지만 포트 80에서 실행되는 모든 호스트가 필요합니다.

IP 매스커레이딩에 대한 몇 가지 정보를 찾았지만 이해하기 어려웠고 이것이 제가 추구하는 것인지 확실하지 않습니다.

내가 찾은 또 다른 해결책은 모든 트래픽을 역방향 프록시 서버로 보내는 것입니다. 그러면 역방향 프록시 서버가 요청을 적절한 서버로 전달합니다. iptables는 어떻습니까?

Billion 7404 VNPX 라우터를 사용하고 있습니다. 이 라우터에 이를 수행할 수 있는 기능이 있습니까?

이것이 나의 유일한 선택입니까? 내가 뭔가를 완전히 놓친 걸까요? 하나가 다른 것보다 추천됩니까?

주변을 검색했지만 올바른 키워드를 입력하고 있는 것 같지 않습니다.

답변1

가장 좋은 해결책은 HTTP 역방향 프록시를 사용하는 것입니다. 이를 위해 다음을 사용할 수 있습니다.

우리는 mod_proxy와 함께 Apache를 사용하고 있지만 파운드를 사용할 생각입니다.

하드웨어 어플라이언스로 Cisco Content Service Switch를 사용할 수 있습니다. 보다:http://www.cisco.com/en/US/products/hw/contnetw/ps792/index.html

답변2

나에게 아이디어가 있는데, 이에 대한 피드백이 있는 분이 있는지 알고 싶습니다.

Reverse Proxy 아이디어를 활용하면 아주 간단하게 문제를 해결할 수 있을 것 같습니다. 저는 이미 다른 서버에서 Nginx를 사용하고 있으므로 이것이 제가 역방향 프록시로 선택한 서버입니다.

라우터에서는 포트 80을 통해 들어오는 모든 연결을 역방향 프록시 서버로 전달합니다. 다음 구성 파일을 사용하여 이 서버에서 Nginx를 실행하겠습니다.

server {
    listen *:80;
    location / {
        proxy_pass    http://$host;
    }
}

이것이 수행하는 작업은 요청을 동일한 호스트로 프록시하는 것입니다. 하지만 여기에 트릭이 있습니다. 내 /etc/hosts 파일에서 모든 도메인을 내부 IP에 매핑합니다.

182.168.0.110 example1.com
182.168.0.120 example2.com
182.168.0.130 foo.example2.com
182.168.0.140 bar.example2.com

따라서 역방향 프록시 서버는 요청된 호스트를 동일한 호스트로 라우팅하지만 이 시점에서는~해야 한다로컬 호스트 파일을 찾아 내부 IP 주소에 매핑합니다. 이는 또한 Nginx 구성 파일을 "설정하고 잊어버릴" 수 있음을 의미합니다.

잠재적인 문제는 로컬 호스트 이름이 구성되지 않은 경우 역방향 프록시가 요청을 다시 인터넷으로 보내는 것입니다. 하지만 NAT는 이것이 무한 루프에 빠지는 것을 막을 것이라고 생각합니다.

이 솔루션은 내 머리와 종이에 작동하는 것 같지만 한동안 설정할 수 없습니다.

이것이 작동하지 않는 이유를 아는 사람이 있습니까?

감사해요.

관련 정보