Bokeh 服务器 + 使用 Nginx 进行反向代理给出 404
Bokeh server + reverse-proxying with Nginx gives 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
但是当我访问网站时。com/plot/ 我从 Bokeh 收到 404,服务器终端给我:WARNING:tornado.access:404 GET / ("here was ip address") 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,但当我转到 website.com:5100/bokehserver/ 时收到“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
我试图通过在 p-website.conf 中添加 allow 127.0.0.1:5100
来解决白名单问题,但没有成功。
我明白了,显然你需要在 Bokeh 命令中添加具有相同位置的 --prefix=:
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;
}
我正在尝试设置 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
但是当我访问网站时。com/plot/ 我从 Bokeh 收到 404,服务器终端给我:WARNING:tornado.access:404 GET / ("here was ip address") 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,但当我转到 website.com:5100/bokehserver/ 时收到“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
我试图通过在 p-website.conf 中添加 allow 127.0.0.1:5100
来解决白名单问题,但没有成功。
我明白了,显然你需要在 Bokeh 命令中添加具有相同位置的 --prefix=:
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;
}