Tôi có một máy chủ web đằng sau một bộ cân bằng tải.
Tôi cần thêm một chuyển hướng có điều kiện vào .htaccess của mình để hiển thị trang bảo trì bất cứ khi nào chúng tôi đưa trang web ngoại tuyến để bảo trì. Phần này rất đơn giản:
RewriteEngine on
RewriteCond %{REQUEST_URI} !/maintenance.php$ [NC]
RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC]
RewriteRule .* /maintenance.php [R=302,L]
Tuy nhiên, tôi muốn thêm vào một điều kiện là nếu địa chỉ IP của khách truy cập là của riêng tôi, nó sẽ không chuyển hướng tôi đến trang bảo trì và tôi sẽ có thể xem và kiểm tra trang web như thể nó đang trực tuyến. Phần này thường cũng đơn giản:
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]
Tuy nhiên, vì máy chủ web của tôi đứng sau bộ cân bằng tải, REMOTE_ADDR
được phân giải thành địa chỉ IP bên trong của máy chủ Cân bằng tải.
Làm cách nào để thay đổi địa chỉ này để tìm địa chỉ IP được chuyển tiếp? Tôi biết trong PHP bạn có thể sử dụng $_SERVER['HTTP_X_FORWARDED_FOR']
để lấy địa chỉ IP được chuyển tiếp. Tôi đã thử một vài điều trong .htaccess
nhưng không có may mắn:
%{X_FORWARDED_FOR}
%{HTTP:X_FORWARDED_FOR}
%{HTTP_X_FORWARDED_FOR}
GIẢI PHÁP
Tôi đã làm việc sau đây:
%{HTTP:X-FORWARDED-FOR}
.jpe
hoặc .jp
tập tin?