.htaccess RewriteCond for REMOTE_ADDR 而在负载均衡器后面?

Jak*_*son 11 linux php lamp .htaccess apache-2.2

我在负载平衡器后面有一个 Web 服务器。

我需要向我的 .htaccess 添加条件重定向,以便在我们将站点脱机进行维护时显示维护页面。这部分很简单:

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

但是我想添加一个条件,如果访问者的 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]
Run Code Online (Sandbox Code Playgroud)

但是,因为我的 Web 服务器在负载均衡器后面,所以REMOTE_ADDR被解析为负载均衡服务器的内部 IP 地址。

如何更改它以查找转发的 IP 地址?我知道在 PHP 中你可以$_SERVER['HTTP_X_FORWARDED_FOR']用来获取转发的 IP 地址。我已经尝试了一些东西,.htaccess但没有运气:

%{X_FORWARDED_FOR}
%{HTTP:X_FORWARDED_FOR}
%{HTTP_X_FORWARDED_FOR}
Run Code Online (Sandbox Code Playgroud)

解决方案

我得到了以下工作:

%{HTTP:X-FORWARDED-FOR}
Run Code Online (Sandbox Code Playgroud)