Saya memiliki server web di belakang load-balancer.
Saya perlu menambahkan pengalihan bersyarat ke .htaccess saya untuk menampilkan halaman pemeliharaan setiap kali kami membuat situs offline untuk pemeliharaan. Bagian ini mudah:
RewriteEngine on
RewriteCond %{REQUEST_URI} !/maintenance.php$ [NC]
RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC]
RewriteRule .* /maintenance.php [R=302,L]
Namun saya ingin menambahkan dalam kondisi bahwa jika alamat IP pengunjung adalah milik saya, itu tidak akan mengarahkan saya ke halaman pemeliharaan dan bahwa saya akan dapat melihat dan menguji situs seolah-olah sedang online. Bagian ini biasanya juga mudah:
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]
Namun, karena server web saya berada di belakang load balancer, REMOTE_ADDR
diselesaikan ke alamat IP internal server Load Balance.
Bagaimana saya bisa mengubah ini untuk mencari alamat IP yang diteruskan? Saya tahu di PHP Anda bisa menggunakan $_SERVER['HTTP_X_FORWARDED_FOR']
untuk mendapatkan alamat IP yang diteruskan. Saya sudah mencoba beberapa hal .htaccess
tetapi tidak berhasil:
%{X_FORWARDED_FOR}
%{HTTP:X_FORWARDED_FOR}
%{HTTP_X_FORWARDED_FOR}
LARUTAN
Saya mendapat yang berikut ini untuk bekerja:
%{HTTP:X-FORWARDED-FOR}
.jpe
atau.jp
file?Jawaban:
Gunakan
%{HTTP:X-FORWARDED-FOR}
sebagai ganti%{REMOTE_ADDR}
sumber
Anda perlu mod_rpaf . Modul ini akan menulis ulang REMOTE_ADDR di apache dengan header lainnya, seperti x-forwarded-for. Sangat berguna untuk membuat aplikasi PHP berperilaku dengan penyeimbang beban.
sumber
http://blog.janjonas.net/2010-01-04/apaches-mod_rewrite-mod_proxy-use-reverse-proxy-request-headers-for-rewrite-rules
Mungkinkah ini jawabannya?
sumber
Jika Anda memiliki dua lingkungan, katakan satu produksi di belakang keseimbangan beban dan pengembangan atau pementasan tidak di belakang keseimbangan beban, dan Anda ingin menggunakan file .htaccess yang sama, Anda akan membutuhkan% {HTTP: X-FORWARDED-FOR} dan % {REMOTE_ADDR} - tetapkan alamat IP untuk kedua kondisi.
sumber