散景服务器 + 使用 Nginx 进行反向代理提供 404

GMa*_*ath 2 python proxy nginx bokeh

我正在尝试设置 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;
}
}
Run Code Online (Sandbox Code Playgroud)

在服务器上,我使用以下命令运行 Bokeh 服务器:

bokeh serve bokehserver.py --port 5100 --host website.com:80
Run Code Online (Sandbox Code Playgroud)

但是当我访问 website.com/plot/ 我从 Bokeh 得到一个 404 并且服务器终端给我:警告: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;
}

}
Run Code Online (Sandbox Code Playgroud)

我现在运行服务器:

bokeh serve bokehserver.py --port 5100 --host 127.0.0.1:80
Run Code Online (Sandbox Code Playgroud)

现在,当我访问 website.com:5100/bokehserver/ 时,我不再得到 404,而是得到“403:禁止”。这条消息在 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
Run Code Online (Sandbox Code Playgroud)

我试图通过添加allow 127.0.0.1:5100p-website.conf来解决白名单问题,但没有成功。

GMa*_*ath 5

我想通了,显然您需要在 Bokeh 命令中添加具有相同位置的 --prefix= :

bokeh serve bokehserver.py --port 5100 --prefix=/plot/ --host website.com:80
Run Code Online (Sandbox Code Playgroud)

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;
}
Run Code Online (Sandbox Code Playgroud)