Desta forma, basta uma única máquina com este serviço para depois permitir o acesso a, por exemplo, vários serviços web existentes na rede privada.
Requisitos
O serviço de reverse proxy será feito com recurso ao nginx num servidor ubuntu 14.04.Servidores internos a disponibilizar na internet:
- 192.168.1.11:80 - servidor web principal
- 192.168.1.12:80 - servidor web de teste
Instalação do nginx
apt-get install nginxApós isto o serviço HTTP fica disponível e acessível na porta 80
netstat -tap
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 *:http *:* LISTEN 8967/nginx
Os ficheiros de configuração de cada site ficam disponíveis em: /etc/nginx/sites-available
Por defeito existe apenas o default que permite ver a página por defeito do nginx.
Configuração do reverse proxy
Como o reverse proxy não vai disponibilizar serviço web direto, a configuração default que pode ser removida:rm /etc/nginx/sites-enabled/default
Após qualquer alteração deste género é necessário fazer o reload das configurações do servidor:
service nginx reload
Neste caso, após ser removido o site default, passará a ser dado um aviso que a página não está disponível.
Resta agora criar um ficheiro de configuração para cada servidor:
nano /etc/nginx/sites-avaiable/www
server {
listen 80;
server_name www.exemplo.org exemplo.org;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass http://192.168.1.11;
}
}
nano /etc/nginx/sites-avaiable/test
server {
listen 80;
server_name test.exemplo.org;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass https://192.168.1.12;
}
}
ln -s /etc/nginx/sites-available/www /etc/nginx/sites-enabled/
ln -s /etc/nginx/sites-available/test /etc/nginx/sites-enabled/
E reiniciar o serviço
service nginx reload
Após isto caso o DNS esteja a apontar para o servidor correto e a porta 80 do router encaminhe tudo para o novo servidor, será possível aceder a cada um dos servidores pelo seu nome de domínio.
Esta configuração pode ser escalável para muitos mais serviços de forma semelhante.
Referências
[1] - Documentação Oficial: https://www.nginx.com/resources/admin-guide/reverse-proxy/[2] - Exemplo: https://www.garron.me/en/linux/nginx-reverse-proxy.html