Eu definitivamente faria isso com um proxy reverso Nginx.
Você pode ter nginx na mesma máquina que seu servidor apache e pode configurá-lo para redirecionar solicitações para o servidor secundário com base na URL.
Neste exemplo, o apache foi (previamente) configurado para servir example.com na porta 8080, enquanto o edu.example.com é exibido em x.x.x.100: 80
server {
server_name example.com;
# app1 reverse proxy follow
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8080;
}
server {
server_name edu.example.com;
# app2 reverse proxy settings follow
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://x.x.x.100:80;
}
Você provavelmente precisará expandir o exemplo com definições para acesso e registros de erros.
Outra grande vantagem que essa configuração oferece é o descarregamento de SSL / TLS: você pode fazer com que os back-ends apache sirvam http e nginx simples para servir https ativados para SSL / TLS, para que você tenha seus certificados em um único servidor, o que facilita muito e mais arrumado para manter.