Сервер Bokeh + обратное проксирование с Nginx дает 404

Я пытаюсь настроить сервер Bokeh и обратный прокси-сервер с Nginx.

Мой p-website.conf теперь выглядит так:

server {
listen   80;
server_name  website.com;
client_max_body_size 25M;
access_log  /var/www/logs/p-website.access.nginx.log;
error_log  /var/www/logs/p-website.error.nginx.log error;
root    /var/www/pydocs/website/production/src;

include global/restrictions.conf;


location /plot/ {
    proxy_pass http://website.com:5100;
    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;
}

location / {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    # enable this if and only if you use HTTPS, this helps Rack
    # set the proper protocol for doing redirects:
    # proxy_set_header X-Forwarded-Proto https;

    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_connect_timeout 10;
    proxy_read_timeout 60s;

    proxy_pass http://production_website_gunicorn;
}
}

На сервере я запускаю сервер Bokeh с:

bokeh serve bokehserver.py --port 5100 --host website.com:80

Но когда я захожу на website.com/plot/, я получаю 404 от Bokeh, и серверный терминал дает мне: ПРЕДУПРЕЖДЕНИЕ: tornado.access: 404 GET / («здесь был ip адрес») 3.04ms

Я не понимаю, почему он всегда дает 404, или это как-то связано с Nginx?

Спасибо!

Обновление 30/06

Хорошо, я думаю, что я на шаг впереди и, надеюсь, в правильном направлении. Мой p-website.conf теперь выглядит так:

server {
listen   80 default_server;
server_name  website.com;
client_max_body_size 25M;
access_log  /var/www/logs/p-website.access.nginx.log;
error_log  /var/www/logs/p-website.error.nginx.log error;
root    /var/www/pydocs/magnify/production/src;

include global/restrictions.conf;


location / {
    allow 127.0.0.1:5100
    proxy_pass http://127.0.0.1:5100;
    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;
}

}

Теперь я запускаю сервер с:

bokeh serve bokehserver.py --port 5100 --host 127.0.0.1:80

Теперь я больше не получаю 404, а "403: запрещено", когда я захожу на website.com:5100/bokehserver/. И это сообщение в терминале bokehserver:

INFO:bokeh.server.tornado:Rejected connection from host 'website.com:5100' because it is not in the --host whitelist
WARNING:tornado.access:403 GET /bokehserver/ (213.152.161.35) 0.78ms

Я попытался исправить проблему белого списка, добавивallow 127.0.0.1:5100 в p-website.conf не повезло.

 GMath30 июн. 2016 г., 18:52
error.nginx.log пуст и в access.nginx.log есть только 404 GET-запроса, а не 403 (см. обновление выше):"GET / bokehserver HTTP / 1.1" 404 1037 "-" "Mozilla / 5.0 (Macintosh; Intel Mac OS X 10.11; rv: 47.0) Gecko / 20100101 Firefox / 47.0" Они работают на одной машине (Ubuntu 14.04 LTS)
 bigreddot28 июн. 2016 г., 21:55
Сервер Bokeh имеет префикс URL по умолчанию (но настраивается)"app", Можете ли вы увидеть страницу наwebsite.com/plot/app/ ?
 GMath06 июл. 2016 г., 11:26
Правда, ноwebsite.com/plot/app/bokehserver также выдает то же Bokeh "404: Not Found", то же самое для/plot/ или же/plot/app/
 bigreddot05 июл. 2016 г., 19:40
с вашиморигинал конф, не так лиwebsite.com/plot/app/bokehserver? Ваш оригинальный блок местоположения для сервера/plotне/
 GMath04 июл. 2016 г., 16:39
Хорошо, спасибо за информацию, так что это не был путь. Если я использую исходные настройки p-website.conf и перехожу по адресу: website.com/app/bokehserver, я возвращаюсь к первоначальной проблеме: Bokeh "404: Not Found"
 bigreddot29 июн. 2016 г., 23:14
Что находится в логах nginx? Находятся ли nginx и bokeh server на разных машинах? Возможно, что-то блокирует трафик между вашим nginx и сервером bokeh. Можно ли попробовать их на одной машине с127.0.0.1 адрес вместоwebsote.com просто чтобы получить данные точки?
 bigreddot30 июн. 2016 г., 20:19
Вы не должны переходить кwebsite.com:5100/bokehserver, который пытается подключитьсянепосредственно к серверу Bokeh, минуя nginx (на порту 80), который вы, вероятно, не хотите разрешать (и почему он вас отвергает). Вы хотите нажать nginx, поэтому вам нужно просто перейти кwebsite.com/bokehserver (или более вероятно:website.com/app/bokehserver  и позвольте nginx переслать соединение внутри.
 bigreddot06 июл. 2016 г., 14:47
Это не даст ничего полезного, вся соответствующая информация есть в журналах и т. Д. Как насчет сделать шаг назад. Эта точная конфигурация работает для вас:bokeh.pydata.org/en/latest/docs/user_guide/server.html#nginx это именно та конфигурация, которую я использовал и протестировал, когда писал эти документы. Если это сработает, я бы предложил продвинуться вперед, внеся дополнительные изменения в эту конфигурацию, чтобы увидеть, какой шаг может вызвать проблемы. Я на самом деле не эксперт NGinx, и это больше вопрос конфигурации NiGInx.
 GMath29 июн. 2016 г., 11:52
Я получаю те же 404 в браузере: «404: не найден» И то же сообщение в терминале: «ВНИМАНИЕ: tornado.access: 404 GET / plot / app / (« здесь был IP-адрес ») 0,58 мс»

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

Решение Вопроса

по-видимому, вам нужно добавить --prefix = с тем же местоположением в команду Bokeh:

bokeh serve bokehserver.py --port 5100 --prefix=/plot/ --host website.com:80

И блок местоположения в p-website.conf будет выглядеть так:

location /plot/ {
    proxy_pass http://127.0.0.1:5100;
    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;
}

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