.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:

  • Debian 6.0: installare mysqlnd_ms
  • Come installare Apache Benchmark su CentOS?
  • dopo aver abilitato mod ssl apache arresta l'ascolto sulla port 80
  • Come scalare php5 + MySQL oltre 200 richieste / secondo?
  • come eliminare un numero insano di file da un sistema unix?
  • In Linux, c'è un modo per vedere quale utente ha aggiornato un file?
  • 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} 

  • ssh login successful, ma la password scp mi dà "Permission denied"
  • Perché ssh-agent ha impostato SGID?
  • Come abilitare l'inoltro di SSH X11 tramite un server aggiuntivo?
  • Autenticazione a due fattori - SSH con chiavi e password account locale
  • Installare singolo tasto SSH più volte su un'unica macchina tramite fantoccio
  • Perché la mia session di SSH esegue la temporizzazione in less di un minuto?
  • 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.