Então, estou movendo meu blog para o Ghost, que é executado no nó. Eu também hospedo uma carga de sites de desenvolvimento no servidor, que funcionam com base em php e apache. O problema é: como roteamos a porta 80 do endereço IP único de nosso servidor para dois servidores separados?
Em primeiro lugar, estou assumindo que você tem node.js e Apache configurados em um servidor Linux (baseado em debian). Você provavelmente também terá algo como Forever para manter seu servidor de nó funcionando erm, para sempre.
Em segundo lugar, assumirei que você deseja acessar seus sites por meio de diferentes nomes de domínio (ou subdomínios), que estão todos configurados e apontando para o IP de seus servidores.
Em terceiro lugar, você já tem seus sites regulares do Apache configurados usando vhosts. Para simplificar, digamos que você já tenha um site normal chamado example.com em execução e queira um novo site – blog.com – para exibir seu blog.
Usaremos o módulo proxy do Apache para dizer ao Apache para rotear qualquer tráfego para blog.com para nosso servidor de nó.
nb Há um aviso muito forte nos documentos do Apache sobre o uso de proxy_mod. Se você estiver executando um servidor de produção valioso, certifique-se de saber o que isso implica.
1 – Habilite proxy mod e proxy mod_http:
$ sudo a2enmod proxy
$ sudo a2enmod proxy_http
2 – Crie um host virtual para blog.com e copie o seguinte, substituindo 2368 por qualquer porta que você configurou seu site de nó para escutar (2368 é o padrão do Ghost)
$ sudo vim /etc/apache2/sites-available/blog
<VirtualHost *:80>
ProxyRequests off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
<Location />
ProxyPass http://localhost:2368/
ProxyPassReverse http://localhost:2368/
</Location>
</VirtualHost>
3 – Habilite o site e recarregue o Apache
$ sudo a2ensite blog
$ sudo service apache2 reload
4 – Isso mesmo. Agora você deve conseguir visualizar seu site Apache em example.com e seu site de nó em blog.com.