FGF-College-Work / Forum

:beer: Espaço dedicado a discussões e tira dúvida sobre disciplinas e conteúdo tecnológico.
MIT License
13 stars 4 forks source link

WordPress e proxies de terminação HTTPS #146

Open marcialwushu opened 5 years ago

marcialwushu commented 5 years ago

WordPress e proxies de terminação HTTPS

Um blog para o qual estou escrevendo estava procurando um novo lugar para hospedar seu site. Como temos um bom cluster com Rancher funcionando, me ofereci para hospedar o site. É o WordPress, então PHP, então quão difícil poderia ser, certo?

Passei algumas horas migrando tudo. A migração inicial para o Docker não foi tão difícil. Há uma ótima imagem oficial do WordPress para o Docker , o que torna extremamente fácil configurar um novo site WordPress no Docker.

A próxima coisa é lidar com uploads de arquivos. Usando o plug-in do-spaces-sync, isso foi facilmente configurado para usar os DigitalOcean Spaces . Demorou um tempo para enviar todas as imagens do antigo wp-content / uploads para o Spaces, mas uma vez que isso foi feito, eu tinha que trabalhar imediatamente depois de configurá-lo. Até agora, toda essa migração foi uma brisa.

Até que eu liguei o DNS e apontei para a nossa nova hospedagem. Eu imediatamente fui pego em um loop de redirecionamento infinito, e eu não tinha ideia do porquê. Passei horas desligando plugins, ligando-os novamente. Depurando tudo, observando logs. Eu não consegui descobrir. Nos cabeçalhos encontrei um cabeçalho dizendo que o redirecionamento veio do WordPress:

X-Redirect-By: WordPress

Eventualmente, eu tentei explicar o problema no canal #wordpress na slack PHPNL e como eu estou digitando minha explicação, algo me ocorre ...

Nossa configuração Rancher possui um balanceador de carga que finaliza o HTTPS e encaminha uma solicitação interna para o contêiner usando http. Mas no WordPress, configurei o siteurl para ser https://. Então o WordPress recebe um pedido usando http, descobre que deve estar usando https e redireciona. Isso faz com que o loop de redirecionamento infinito!

Claro, eu não fui o primeiro a encontrar esse problema. Depois de saber qual era o problema, pesquisar na Internet rapidamente me deu a solução. No Wordpress Codex, é claro . A única coisa que eu precisava fazer era adicionar uma única linha ao meu arquivo .htaccess:

SetEnvIf X-Forwarded-Proto https HTTPS

Uma vez que fiz isso, reconstruí meus containers e os implantei para o Rancher, o problema foi resolvido. De repente, tudo funcionou.

marcialwushu commented 5 years ago

https://skoop.dev/blog/2019/03/09/WordPress_and_HTTPS-termination_proxies/

The other solution is to use proper apache module (mod_rpaf2, mod_remoteip) which will set HTTPS variable (and other like REMOTE_ADDR) based on what scheme was used to connect to proxy. That won't require any changes in apps or such htaccess hacks.