O problema é que eu esqueci que estava usando o CloudFlare (fácil de esquecer quando você o instalou). É por isso que HTTP_X_FORWARDED_PROTO disse HTTPS, porque eu estava por trás de um proxy reverso.
Minha configuração CloudFlare em CRYPTO / SSL com SPDY também dizia: Flexível. Quando alterado para full, o PHP retorna os esperados HTTPS e SERVER_PORT vars.