.htaccess RewriteCond per REMOTE_ADDR mentre dietro Load Balancer?

Ho un server web dietro un bilanciatore di carico.

Devo aggiungere un reindirizzamento condizionale al mio .htaccess per visualizzare una pagina di manutenzione each volta che prendiamo il sito offline per la manutenzione. Questa parte è semplice:

RewriteEngine on RewriteCond %{REQUEST_URI} !/maintenance.php$ [NC] RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC] RewriteRule .* /maintenance.php [R=302,L] 

Tuttavia voglio aggiungere in una condizione che se l'indirizzo IP del visitatore è mio, non mi redirect alla pagina di manutenzione e che sarei in grado di vedere e testare il sito come se fosse in linea. Questa parte è normalmente anche semplice:

 RewriteEngine on RewriteCond %{REMOTE_ADDR} !^11\.111\.111\.111 RewriteCond %{REQUEST_URI} !/maintenance.php$ [NC] RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC] RewriteRule .* /maintenance.php [R=302,L] 

Tuttavia, poiché il mio server web è dietro un bilanciatore di carico, REMOTE_ADDR viene risolto nell'indirizzo IP interno del server Load Balance.

Come posso modificare questo per cercare l'indirizzo IP inoltrato? So che in PHP è ansible utilizzare $_SERVER['HTTP_X_FORWARDED_FOR'] per get l'indirizzo IP inoltrato. Ho provato alcune cose nel .htaccess ma non ho fortuna:

 %{X_FORWARDED_FOR} %{HTTP:X_FORWARDED_FOR} %{HTTP_X_FORWARDED_FOR} 

SOLUZIONE

Ho il seguente lavoro:

 %{HTTP:X-FORWARDED-FOR} 

  • Può APC riconoscere i file di origine duplicati?
  • Aggiorna PHP5.1.6 a PHP5.3 in CentOS
  • Come posso testare la sicurezza del mio server?
  • POST Fail via richiesta AJAX?
  • Equivalente di setlocale PHP in un file di configuration APACHE
  • è necessaria una configuration aggiuntiva dopo l'installazione del certificato SSL?
  • Il modo migliore per rendere RHSCL PHP disponibile a livello globale
  • Imansible innescare il mio script php quando la posta ricevuta dal mio Postfix
  • 4 Solutions collect form web for “.htaccess RewriteCond per REMOTE_ADDR mentre dietro Load Balancer?”

    Utilizza %{HTTP:X-FORWARDED-FOR} anziché %{REMOTE_ADDR}

    Hai bisogno di mod_rpaf . Questo module riscrive REMOTE_ADDR in apache con un'altra intestazione, ad esempio x-forwarded-for. Molto utile per rendere le applicazioni di PHP si comportno con i bilanciatori di carico.

    Se si dispone di due ambienti, ad esempio una produzione dietro l'equilibrio del carico e uno sviluppo o uno staging non dietro l'equilibrio del carico e si desidera utilizzare lo stesso file .htaccess, sarà necessario sia% {HTTP: X-FORWARDED-FOR} e % {REMOTE_ADDR} – assegna gli indirizzi IP a entrambe le condizioni.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.