도메인을 기준으로 각 포트를 전달합니다.

도메인을 기준으로 각 포트를 전달합니다.

친구와 저는 우리를 위해 작은 웹사이트 호스팅을 하고 있습니다. 현재 모든 페이지는 Apache2의 가상 호스트를 통해 하나의 서버에서 실행되고 있습니다. 우리는 SSH 액세스, FTP 서버 및 기타 몇 가지 사항을 포함하여 각 사이트에 대한 서버를 만들고 싶습니다.

나는 그것을 시도해 보았고 다음 예와 같이 ProxyPass를 찾았습니다.

<VirtualHost *:80>
        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        ServerName example.com
        ServerAlias www.example.com

        ProxyRequests Off
        ProxyPass / http://192.168.2.141/
        ProxyPassReverse / http://192.168.2.141/

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

정상적으로 작동하는 것 같지만 http 프로토콜에서만 작동합니다. 또한 ssh, ftp 등을 전달하고 싶습니다.

누구든지 어떤 아이디어가 있습니까?

답변1

안타깝게도 귀하께서 사용하고 계시는이름 기반 가상 호스팅apache이는 클라이언트 호스트 이름의 HTTP 헤더를 읽고 <VirtualHost>해당 값에 따라 사용할 블록을 결정하기 때문에 작동합니다 . 귀하의 블록은 요청을 다른 서버로 프록시하도록 지시합니다.

ssh또는 에 유사한 시설이 없습니다 ftp.

가장 가까운 방법은 iptables포트에서 다른 서버로 패킷을 전달하는 것입니다.

# iptables - nat -A PREROUTING -p tcp --dport 1022 -j DNAT --to-destination 192.168.2.141:22
# sysctl -w net.ipv4.ip_forward=1

그러면 서버의 포트 1022에서 수신 대기하고 192.168.2.141의 포트 22로 트래픽을 전달합니다. 그런 다음 귀하(또는 귀하의 친구)가 ssh [username@]192.168.2.141 -p 1022서버에 액세스 해야 합니다 .

다른 iptables회선을 추가하여 포트 1023을 다른 서버의 포트 22로 전송할 수 있습니다. 아마 당신도 ftp읽어보면 같은 일을 할 수 있을 것이다이것서버 장애 문제.

관련 정보