ロードバランサーの背後にWebサーバーがあります。
メンテナンスのためにサイトをオフラインにするたびにメンテナンスページを表示するには、.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]
ただし、私のWebサーバーはロードバランサーの背後にあるため、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
ファイルをしますか?