1

Мое приложение не нуждается в ответе на http-запросы, за исключением перенаправления их на https, но у меня возникли проблемы с настройкой для этого. У меня есть Django, за Guincorn, за балансировщик нагрузки уровня Google Cloud 4 (настроенный через кубернете). Я не использую nginx, потому что статические файлы обслуживаются через ведра для облачных хранилищ Google, поэтому он, казалось, добавляет излишнюю сложность (есть причина, почему это неправильно?)HTTPS перенаправление с kubernetes l4 load balancer

Когда я настраиваю guincorn для https, это не отвечать на 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

Совет от кубернетов должен использовать входной контроллер, за которым (в данном случае) nginx перенаправляет http на https.

Что это такое: - nginx просматривает http_forwarded_for и перенаправляет на https, если он установлен неправильно. - Вступление фактически прекратит использование https для вас, так что ваши приложения не должны этого делать.

Подробнее см. На странице https://github.com/kubernetes/contrib/tree/master/ingress/controllers/nginx.