.htaccess RewriteCond用于Elastic Load Balancer背后的maintanace页面

时间:2017-07-20 16:43:23

标签: apache .htaccess amazon-web-services tcp amazon-elb

我的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>

0 个答案:

没有答案