我的Web服务器支持AWS Elastic负载均衡器,ELB的侦听器协议是TCP for 80和443(不是HTTP / HTTPS)。
我需要向我的.htaccess添加条件重定向,以便在我们将网站脱机以进行维护时显示维护页面,除了我的IP地址。
RewriteEngine on
RewriteCond %{REQUEST_URI} !\.(gif|jpe?g|png|css|js)$
RewriteCond %{REMOTE_HOST} !^1.1.1.1
RewriteRule $ maintenance.html [NC,L]
但是,由于我的Web服务器位于负载均衡器后面,因此REMOTE_ADDR将解析为负载均衡服务器的内部IP地址。
%{HTTP:X-FORWARDED-FOR}而不是%{REMOTE_HOST}对我不起作用,我认为这是因为使用了TCP协议而不是HTTP。如何获取客户端IP地址?或者我是否需要对apache配置或ELB进行任何更改?
ssl的Apache配置
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/cert.cer
SSLCertificateKeyFile /etc/apache2/ssl/cert.key
SSLCACertificateFile /etc/apache2/ssl/cacert.cer
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
</VirtualHost>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
<Directory /var/www/html>
Options Indexes MultiViews FollowSymLinks
AllowOverride all
Order deny,allow
Deny from all
Allow from all
</Directory>