2017-02-03 117 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的詳細示例。