Apache Trust Proxy

Scripts em Lua que resolvem o problema do Apache com URLs, quando está atrás do Nginx
Apache2Lua

Dude, what the what ?

Eu fiz um pequeno 'mod' em Lua que faz o Apache parar com 'URL mismatches'

Ex.: Se o Nginx estiver a fazer Proxy para um site apache noutra porta, o Apache pode adicionar a porta ao URL, trocar entre http:// e https:// entre outros.

Esta solução trata dos dois cenários mais prováveis:

  1. CanonicalName
  2. Directory Slash

CanonicalName faz o Apache forçar o nome que acha que tem, o que é problemático se o Nginx estiver na frente. Vai causar URLs estranhos.
Aqui a solução é simples, colocar isto nas configurações:

CanonicalName Off

Só isto já resolve imenso.

Directory Slash é quando o Apache adiciona um / no final do URL

Antes: http://domain.com 
Depois: http://domain.com/

Só que o Apache não sabe que o Nginx está à frente, nem que a porta e o endereço são diferentes, o que por isso causa URL mismatch.
Por isso um dos scripts Lua adiciona o / antes que o Apache acione o DirectorySlash.

E como o script tem atenção a headers como X-Host e X-Forwarded-Scheme,
este script faz um "Smart" Directory Slash, prevenindo URL mismatch :)

Não é a solução perfeita, mas é uma solução que previne grande parte dos problemas.

Não te esqueças de :

  • Usar o Nginx para redirects e não o Apache

Eu também estou a trabalhar num mod (em C) que subsitua as variáveis de raiz, resolvendo o problema de raiz em vez de ser um band-aid.