У меня есть веб-сервер за балансировщиком нагрузки.
Мне нужно добавить условное перенаправление в мой .htaccess, чтобы отображать страницу обслуживания всякий раз, когда мы переводим сайт в автономный режим для обслуживания. Эта часть проста:
RewriteEngine on
RewriteCond %{REQUEST_URI} !/maintenance.php$ [NC]
RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC]
RewriteRule .* /maintenance.php [R=302,L]
Однако я хочу добавить условие, что если IP-адрес посетителя мой, он не будет перенаправлять меня на страницу обслуживания, и я смогу увидеть и протестировать сайт, как если бы он был в сети. Эта часть обычно также проста:
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]
Однако, поскольку мой веб-сервер находится за балансировщиком нагрузки, REMOTE_ADDR
он разрешается во внутренний IP-адрес сервера балансировки нагрузки.
Как я могу изменить это, чтобы искать переадресованный IP-адрес? Я знаю, в PHP вы можете использовать, $_SERVER['HTTP_X_FORWARDED_FOR']
чтобы получить перенаправленный IP-адрес. Я попробовал несколько вещей, .htaccess
но не повезло:
%{X_FORWARDED_FOR}
%{HTTP:X_FORWARDED_FOR}
%{HTTP_X_FORWARDED_FOR}
РЕШЕНИЕ
Я получил следующее на работу:
%{HTTP:X-FORWARDED-FOR}
.jpe
или.jp
файлы?Ответы:
Используйте
%{HTTP:X-FORWARDED-FOR}
вместо%{REMOTE_ADDR}
источник
Вам нужен mod_rpaf . Этот модуль перезапишет REMOTE_ADDR в apache с другим заголовком, например, x-forwarded-for. Очень полезно для того, чтобы PHP-приложения работали с балансировщиками нагрузки.
источник
http://blog.janjonas.net/2010-01-04/apaches-mod_rewrite-mod_proxy-use-reverse-proxy-request-headers-for-rewrite-rules
Может ли это быть ответом?
источник
Если у вас две среды, скажем, одно производство находится за балансом нагрузки, а разработка или этап не за балансом нагрузки, и вы хотите использовать один и тот же файл .htaccess, вам потребуются оба% {HTTP: X-FORWARDED-FOR} и % {REMOTE_ADDR} - назначить IP-адреса обоим условиям.
источник