Obtendo IP real em uma aplicação web atrás de um proxy reverso

Quando utilizamos um proxy reverso como varnish ou nginx (até mesmo com o apache da pra fazer isso) temos um pequeno problema em aplicações que logam ip do usuário (como um sistema de comentários, por exemplo).

Ao configurar um proxy reverso, normalmente denominamos um header separado para o IP real da aplicação, pode ser qualquer header, mas normalmente é utilizado o header XForwardedFor (que chamamos de XFF)

Existem diversas soluções para isto, a primeira atraves de php, bastando inserir o código abaixo em algum arquivo de include global (como arquivo de conexão ao banco)

<?php
$_SERVER['REMOTE_ADDR'] = $_SERVER['X_FORWARDED_FOR'];
?>

Para uma solução a nível de webserver (apache) podemos usar o mod_rpaf.
Para instalar no ubuntu (e distros baseadas em debian)

apt-get install libapache2-mod-rpaf

Para demais distros, pode-se obter o source na página do projeto:
http://stderr.net/apache/rpaf/

Atualizando rubygems no centos5

E la vou eu instalar uma aplicação redmine quando, de repente me surge essa “bomba”

$ gem install rake
ERROR:  Error installing rake:
rake requires RubyGems version >= 1.3.2

Oh, e agora ,quem poderá nos defender?

Bem, aquele erro basicamente diz que temos que atualizar a versão do rails, então… maos de sobra… digo, maos a bora

Instalando o RubyGens mais novo:

cd /tmp/
wget http://rubyforge.org/frs/download.php/55066/rubygems-1.3.2.tgz
tar xvzf rubygems-1.3.2.tgz 
cd rubygems-1.3.2
sudo ruby setup.rb

Agora sim, instalando o rake:

$ gem install rake

E, here we go!

$ rake --version
rake, version 0.9.2