我正在AWS ELB后面的EC2上运行airflow(版本1.10.10)Web服务器
这是ELB侦听器配置
Load Balancer Protocol : SSL Load Balancer
Port: 443 Instance
Protocol: TCP Instance
Port: 8080
Cipher omit here
SSL Certificate a cert here
在ELB前面,我配置了route53并将一个fqdn设置为Web服务器,例如:abc.fqdn
所有页面加载正常,例如 https://abc.fqdn/admin/或 https://abc.fqdn/admin/airflow/tree?dag_id=tutorial
所有Web表单提交都可以正常工作,例如 触发DAG
但是,提交表单后,页面将转发到http,并且由于elb侦听器而导致页面未加载。 我必须手动更改为https,例如https:// admin / airflow / tree?dag_id = tutorial
这是我所做的: 我读到这篇文章:https://github.com/apache/incubator-superset/issues/978
然后在Web服务器ec2上,我找到了这个文件/usr/local/lib/python3.7/site-packages/airflow/www/gunicorn_config.py
和此示例配置:https://gist.github.com/kodekracker/6bc6a3a35dcfbc36e2b7
我添加了以下配置,我的配置文件如下所示
import setproctitle
from airflow import settings
secure_scheme_headers = {
'X-FORWARDED-PROTOCOL': 'ssl',
'X-FORWARDED-PROTO': 'https',
'X-FORWARDED-SSL': 'on'
}
forwarded_allow_ips = "*"
proxy_protocol = True
proxy_allow_from = "*"
def post_worker_init(dummy_worker):
setproctitle.setproctitle(
settings.GUNICORN_WORKER_READY_PREFIX + setproctitle.getproctitle()
)
但是,上面的新配置似乎不起作用。 我做错了吗?提交表单后,如何使Web节点转发到https?
答案 0 :(得分:0)
对于https,我改用了ALB……必须将Airflow Web服务器设置为具有crt(使用ALB将使用的域生成的自签名),然后在端口8443上进行服务(选择您喜欢的任何内容),然后设置ALB以将https路由到8443的Web服务器ASG实例所在的目标组;然后您告诉ALB(可能)使用您的AWS帐户中已经拥有的签名证书(而不是实例上的自签名证书)。
哦,将baseURL更改为https模式。
我在ELB上遇到了麻烦,因为我将类似的443和cert一起在AWS账户中定向到8080,但是8080未加密...