如何强制https亚马逊弹性豆茎,而不会失败的健康检查

use*_*340 15 apache mod-rewrite https amazon-web-services amazon-elastic-beanstalk

我已经配置了我的Elastic Beanstalk环境以将所有页面重定向到https,重定向工作,但是,实例未通过运行状况检查并终止,任何想法如何配置重写规则?

我的配置:

NameVirtualHost *:80

<VirtualHost *:80>
.
.
.

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule !/_hostmanager/healthcheck https://%{SERVER_NAME}%{REQUEST_URI} [L,R] 
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

Joe*_*erg 13

除了运行状况检查之外,Elastic Beanstalk还需要访问多个主机管理器URL.Grepping /var/log/httpd/elasticbeanstalk-access_log,我看到请求/_hostmanager/tasks/_hostmanager/healthcheck.

以下是我/etc/httpd/sites/elasticbeanstalk在EC2实例中添加的规则:

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{REQUEST_URI} !^/status$ 
RewriteCond %{REQUEST_URI} !^/version$ 
RewriteCond %{REQUEST_URI} !^/_hostmanager/ 
RewriteRule . https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
Run Code Online (Sandbox Code Playgroud)

请注意,我还允许非https流量到我的/status/version页面.我实际上使用的/status是作为实际的健康检查查找URL,因此让该流量跳过重写将避免重定向并使状态查找更快(我假设).


vca*_*llo 8

我认为这里的其他一些答案可能不是基于User-AgentAWS当前设置的任何内容.当我观看Apache日志时,我看到了这个用户代理:

ELB-HealthChecker/1.0

在撰写本文时,以下mod_rewrite规则对我有用:

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTP_USER_AGENT} !^ELB-HealthChecker.* 
RewriteRule . https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
Run Code Online (Sandbox Code Playgroud)


Dan*_*Dan 6

截至2016年,这些答案都不适合我,但这有效:

1检索 /etc/httpd/conf.d/wsgi.conf

2将以下内容添加到虚拟主机:(请注意,第三行可防止安装脚本/opt/elasticbeanstalk/hooks/config.py等待5分钟无法加载路径的问题/.)

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTP_HOST} !localhost
RewriteCond %{HTTP_USER_AGENT} !^ELB-HealthChecker.* 
RewriteRule . https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]
Run Code Online (Sandbox Code Playgroud)

3将文件放入存储库,然后添加以下容器命令:

06_https:
  command: "cp wsgi.conf /opt/python/ondeck/wsgi.conf"
Run Code Online (Sandbox Code Playgroud)

然后,安装脚本会自动将此文件复制到/etc/httpd/conf.d.


ald*_*eal 0

创建静态 health.html。如果可能,作为配置模板。