2017-02-03 116 views
1

我的应用程序不需要对http请求做出响应,除非将它们重定向到https,但我无法为此配置它。我有位于Guincorn后面的Django,位于Google云端级别4负载均衡器后面(通过kubernetes设置)。我不使用nginx,因为静态文件是通过谷歌云存储桶提供的,所以它似乎增加了不必要的复杂性(是否有这个错误的原因?)使用kubernetes进行HTTPS重定向l4负载平衡器

当我为https配置guincorn时,它不响应http请求(ok)。我的第一个想法是通过负载均衡器转发端口80和443,然后让django/guincorn负责重定向,但我无法同时为http和https服务,即使我尝试了暴露两个端口:

gunicorn --threads 2 -b :8000 --keyfile=key.txt --certfile=cert.txt myapp.wsgi 

负载均衡的配置是:

apiVersion: v1 
kind: Service 
metadata: 
    name: xxx 
    labels: 
    name: xxx 
spec: 
    ports: 
    - port: 443 
    name: https 
    targetPort: 8000 
    selector: 
    name: app 
    type: LoadBalancer 
    loadBalancerIP: xx.xx.xx.xx 

有可能改变这一点,以便gunicorn也要回答HTTPS请求? (Django配置设置为不重定向http请求)。
或者我完全错了吗?我应该试图在负载均衡器本身执行重定向吗?

回答

0

来自kubernetes的建议是使用一个入口控制器(在这种情况下)一个nginx将http重定向到https。

这是干什么的: - 如果设置不正确,nginx会查看http_forwarded_for并重定向到https。 - 入口实际上会终止您的https,以便您的应用程序不必这样做。

查看https://github.com/kubernetes/contrib/tree/master/ingress/controllers/nginx的详细示例。