Не могли бы вы решить проблему?

у, чтобы приложение для колб использовало встроенную подачу боке с сервера в моей локальной сети. Для иллюстрации я сделал пример, используяпример подачи боке и образ докера для репликации сервера. В докере работает Nginx и Gunicorn. Я думаю, что есть проблема с моей конфигурацией nginx, перенаправляющей запросы в / bkapp uri.

Я подробно описал проблему и предоставил весь исходный код в следующеммерзавец

Я начал обсуждениебоке гугл групп

Один контейнер

Чтобы уменьшить сложность запуска nginx в своем собственном контейнере, я создал этот образ, который запускает nginx в том же контейнере, что и веб-приложение.

Монтаж

ПРИМЕЧАНИЕ: я использую Docker версии 17.09.0-ce

Загрузите или клонируйте репозиторий и перейдите в этот каталог (single_container).

# as root
docker build -f Dockerfile -t single_container .

строить

начать сеанс терминала в новом контейнере

# as root
docker run -ti single_container:latest

В новом контейнере запускаем nginx

nginx

Теперь начните Gunicorn

gunicorn -w 1 -b :8000 flask_gunicorn_embed:app

Начало

в отдельном терминале (на хост-компьютере) найдите IP-адрес контейнера single_container, который вы запускаете

#as root
docker ps
# then do copy CONTAINER ID and inspect it
docker inspect [CONTIANER ID] | grep IPAddress

находить

ПРОБЛЕМА

Используя IP, найденный выше (с запущенным контейнером), проверьте в Firefox с инспектором. Как вы можете на скриншоте выше (см. Папку с скриншотами "single_container_broken.png" для необработанного запроса get просто зависает

broke_1

Я могу убедиться, что nginx обслуживает статические файлы, перейдя в / bkapp / static / (смотрите конфигурацию в bokeh_recipe / single_container / nginx / bokeh_app.conf)

статический

Еще одна странность заключается в том, что я пытаюсь поразить встроенный сервер Bokeh напрямую (с / bkapp /), но я получаю 400 (отказано?)

bkapp

Примечание о приложениичтобы уменьшить сложность динамического назначения доступных портов работникам торнадо, я жестко запрограммировал в 46518 порт для связи с подачей бокеКонфигурация nginx

Я знаю, что вы можете просто посмотреть на bokeh_recipe / single_container / nginx / bokeh_app.conf, но я хочу показать это здесь. Я думаю, что мне нужно настроить nginx, чтобы сделать явным, что «запрос» к bkapp к 127.0.0.1:46518 исходит от сервера, а не от клиента.

## Define the parameters for a specific virtual host/server
server {

    # define what port to listen on
    listen 80;

    # Define the specified charset to the “Content-Type” response header field
    charset utf-8;

    # Configure NGINX to deliver static content from the specified folder
    # NOTE this should be a docker volume shared from the bokehrecipe_web container (css, js for bokeh serve)
    location /bkapp/static/ {
        alias /home/flask/app/web/static/;
        autoindex on;
    }

    # Configure NGINX to reverse proxy HTTP requests to the upstream server (Gunicorn (WSGI server))
    location / {
        proxy_pass http://127.0.0.1:8,000;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host:$server_port;
        proxy_buffering off;
    }
   # deal with the http://127.0.0.1/bkapp/autoload.js (note hard coded port for now)
    location /bkapp/ {
        proxy_pass http://127.0.0.1:46518;
    }

}

Ответы на вопрос(0)

Ваш ответ на вопрос