单击触发DAG后

时间:2020-08-02 16:08:42

标签: https webserver airflow gunicorn amazon-elb

我正在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?

1 个答案:

答案 0 :(得分:0)

对于https,我改用了ALB……必须将Airflow Web服务器设置为具有crt(使用ALB将使用的域生成的自签名),然后在端口8443上进行服务(选择您喜欢的任何内容),然后设置ALB以将https路由到8443的Web服务器ASG实例所在的目标组;然后您告诉ALB(可能)使用您的AWS帐户中已经拥有的签名证书(而不是实例上的自签名证书)。

哦,将baseURL更改为https模式。

我在ELB上遇到了麻烦,因为我将类似的443和cert一起在AWS账户中定向到8080,但是8080未加密...