Mateus Müller

O carinha do Linux

11 out. 2018

Como configurar o Apache como Proxy Reverso no Linux

Fazia um tempinho que eu não escrevia sobre configuração de serviços aqui no blog, então hoje vamos aprender a como configurar o Apache como Proxy Reverso no Linux. Ah, Mateus, mas eu nem sei que é Proxy Reverso… Então, vamos lá!

Um Proxy Reverso (ou Reverse Proxy, como é chamado em Inglês) é um servidor Web que colocamos como o “cara” que vai receber todas as requisições, e, dependendo das regras que criamos, ele tomará alguma ação.

Para um melhor entendimento, veja esta imagem do próprio site do Apache:

Como configurar o Apache como Proxy Reverso no Linux
Como configurar o Apache como Proxy Reverso no Linux

Todas as requisições passarão pelo reverse-proxy, e ele é quem irá escolher para quem direcionar nos backend servers, saca? Isso nos trás algumas vantagens, como:

  • Podemos fazer o balanço de carga (load balancing). Por exemplo: Imagina que temos três backends rodando uma aplicação em Django. Duas delas estão lotadas de usuários e somente uma está disponível para receber mais gente. O cara que identifica essa “disponibilidade” de carga é o reverse-proxy.
  • Temos mais segurança, pois podemos definir regras no proxy também. Como você pode ver na figura do Apache, temos Firewall -> Proxy -> Firewall -> backend. São três camadas de segurança!
  • Facilidade de acesso, porque vamos utilizar somente uma URL para acessar, e não três.
  • Poupamos dinheiro com certificados SSL. Se estamos acessando sempre o mesmo endereço de URL, logo sempre será o mesmo CN do certificado SSL. Se fossemos acessar por três endereços diferentes, seriam três certificados. E tudo isso é gasto.
  • Bom, já deu pra ver algumas vantagens do Proxy Reverso, não é mesmo? Vamos fazer uma configuração básica então! 🙂

    Como configurar Apache como Proxy Reverso no Linux

    Bom, no meu caso vou demonstrar com a distribuição CentOS 7, com o seguinte cenário:

  • Cliente: Ubuntu 18.04 -- 192.168.25.58.
  • Backend: CentOS 7 -- 192.168.25.52.
  • Proxy Reverso: CentOS 7 -- 192.168.25.41.
  • Configurando o Backend

    Primeiro, no backend, basta colocar um servidor Web para rodar. Desta forma, pode ser uma aplicação em Rails, Django, Tomcat, etc. No meu caso, estou usando uma simples página HTML.

  • $ sudo yum install httpd -y
  • $ sudo systemctl enable httpd && sudo systemctl start httpd
  • $ firewall-cmd --add-service=http --permanent
  • $ firewall-cmd --reload
  • Como configurar o Apache como Proxy Reverso no Linux
    Como configurar o Apache como Proxy Reverso no Linux

    Em seguida, se acessarmos esse IP pelo browser do cliente:

    Como configurar o Apache como Proxy Reverso no Linux
    Como configurar o Apache como Proxy Reverso no Linux

    Tudo ok! Próximo.

    Configurando o Proxy Reverso

    Posteriormente, faça o mesmo processo de instalação do Apache da parte do backend.

    Então, para fazer o Apache funcionar como Proxy Reverso, precisamos de alguns módulos. Veja se o mesmos estão instalados com o comando abaixo:

  • $ httpd -M | grep proxy
  • Como configurar o Apache como Proxy Reverso no Linux
    Como configurar o Apache como Proxy Reverso no Linux

    Desta forma, se aparecer como o print acima, então está tudo ok! Caso contrário, você deve adicioná-los no arquivo de configuração usando um editor de texto da sua escolha.

  • $ vim /etc/httpd/conf/httpd.conf
  • Então, adicione as linhas abaixo (pode ser no final do arquivo):

    Como configurar o Apache como Proxy Reverso no Linux
    Como configurar o Apache como Proxy Reverso no Linux

    E reinicie o Apache:

  • $ sudo systemctl restart httpd
  • Veja que, por enquanto, se acessarmos o IP do Proxy Reverso pelo cliente, ele nos retorna a página HTML dele mesmo.

    Como configurar o Apache como Proxy Reverso no Linux
    Como configurar o Apache como Proxy Reverso no Linux

    Então, ainda não está fazendo o redirect.

    A última configuração é editar o arquivo de configuração novamente e adicionar o seguinte conteúdo:

  • $ vim /etc/httpd/conf/httpd.conf
  • Como configurar o Apache como Proxy Reverso no Linux
    Como configurar o Apache como Proxy Reverso no Linux

    Esta configuração quer dizer que, todas as conexões que entrarem no / (menu principal), serão direcionadas para o IP 192.168.25.52. Salve e reinicie o Apache novamente.

  • $ sudo systemctl restart httpd
  • Em seguida, acesse novamente pelo cliente e BOOM!

    Como configurar o Apache como Proxy Reverso no Linux
    Como configurar o Apache como Proxy Reverso no Linux

    Provando o que está acontecendo…

    Acessamos o IP 192.168.25.41 e ele foi direcionado para 192.168.25.52. Quer ver uma prova disso, vou analisar o tráfego HTTP.

  • $ httpry -i enp0s3
  • Como configurar o Apache como Proxy Reverso no Linux
    Como configurar o Apache como Proxy Reverso no Linux

    Veja o direcionamento da request partindo do cliente para o proxy, e do proxy para o backend. Posteriormente, a request faz o processo contrário para retornar o conteúdo pro cliente. Massa, né?

    Espero que tenha gostado desta dica, grande abraço!

    Não esqueça de nos seguir no Instagram para receber os últimos conteúdos!

    Participe dos nossos grupos no Telegram e Facebook! 🙂

    Veja também:

    Se tiver alguma dúvida ou sugestão de conteúdo, por favor, comente!

    Comentários Disqus