Не могли бы вы решить проблему?
у, чтобы приложение для колб использовало встроенную подачу боке с сервера в моей локальной сети. Для иллюстрации я сделал пример, используяпример подачи боке и образ докера для репликации сервера. В докере работает 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 просто зависает
Я могу убедиться, что nginx обслуживает статические файлы, перейдя в / bkapp / static / (смотрите конфигурацию в bokeh_recipe / single_container / nginx / bokeh_app.conf)
Еще одна странность заключается в том, что я пытаюсь поразить встроенный сервер Bokeh напрямую (с / bkapp /), но я получаю 400 (отказано?)
Примечание о приложениичтобы уменьшить сложность динамического назначения доступных портов работникам торнадо, я жестко запрограммировал в 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;
}
}