A maneira mais fácil de encontrar isso é soltando mod_php e usando um script CGI. Isso permite que você chame php-cgi (uma versão direcionada a CGI do interpretador PHP) de um script de shell que é executado no carregamento da página.
Aqui está um exemplo de script bash que define as variáveis de ambiente SERVER_PORT e HTTPS com base no cabeçalho X-Forwarded-Proto e, em seguida, chama php-cgi :
#!/bin/bash
# HTTPS fix (WARNING: THIS HEADER CAN BE FAKED BY THE CLIENT)
if [[ "$HTTP_X_FORWARDED_PROTO" == "https" ]]; then
export SERVER_PORT=443
export HTTPS="on"
else
export SERVER_PORT=80
fi
php-cgi
É claro que você deve ter cuidado, porque o cabeçalho X-Forwarded-Proto pode ser enviado pelo cliente, então, a menos que você tenha algo entre o Apache e o cliente que limpa esse cabeçalho, você não deve confiar nele! (você provavelmente também quer desligar o Apache, ou melhor ainda, apenas escutar em loopback)
Tudo o que você precisa fazer é fazer com que o Apache use este script bash para cada arquivo com a extensão .php ( mod_cgi e mod_actions permitem fazer isso).