Передача прокси-сервера NGINX https в Gunicorn http приводит к ошибке смешанного содержимого - PullRequest
0 голосов
/ 20 июня 2019

У меня есть один хост, на котором запущены NGINX и Gunicorn внутри контейнеров Docker. Я использую NGINX для прокси-запросов к API, выставленному мной с помощью Gunicorn. Когда я запускаю каждый контейнер и перехожу к конечной точке веб-сайта, которую я настроил в моем nginx.conf, Chrome сообщает мне об ошибке смешанного содержимого, и запрос блокируется.

Я использовал несколько версий конфигурации для моего nginx.conf файла и не могу получить ни одну из них для устранения этой ошибки смешанного содержимого.

Мой nginx.conf:

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    root /usr/share/nginx/html;
    index index.html
    server_name example.com;

    listen 443 ssl; # managed by Certbot

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

    ssl_buffer_size 8k;

    ssl_dhparam /etc/ssl/certs/dhparam-2048.pem;

    ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
    ssl_prefer_server_ciphers on;

    ssl_ciphers ECDH+AESGCM:ECDH+AES256:ECDH+AES128:DH+3DES:!ADH:!AECDH:!MD5;

    ssl_ecdh_curve secp384r1;
    ssl_session_tickets off;

    # Redirect non-https traffic to https
    if ($scheme != "https") {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    location /login {
      proxy_set_header        Host $host;
      proxy_redirect off;
      proxy_set_header        X-Real-IP $remote_addr;
      proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header        X-Forwarded-Proto https;
      proxy_pass          http://1.2.3.4:8000/login;
    }

}

А моя команда Gunicorn:

gunicorn --workers 4 --timeout 3600 --graceful-timeout 3600 --bind=0.0.0.0:8000 hserve:__hug_wsgi__"

Когда я развертываю контейнер API с помощью команды Gunicorn, описанной выше, я могу успешно отправлять запросы конечной точке с помощью Postman.

Моя цель состоит в том, чтобы иметь возможность передавать данные через контейнер API (который является http) в веб-приложение (которое является https) без смешанных ошибок содержимого.

...