gpt4 book ai didi

python-3.x - 在 "Error loading layout"中使用 nginx 在 twisted 上代理破折号

转载 作者:行者123 更新时间:2023-12-03 16:58:02 26 4
gpt4 key购买 nike

我通过(my_dashboard.py 的相关代码)实现了一个用于在生产场景中运行的破折号仪表板

import dash
import flask
from twisted.internet import reactor
from twisted.web.server import Site
from twisted.web.wsgi import WSGIResource
import werkzeug.serving

server = flask.Flask(__name__)
app = dash.Dash(__name__, server=server)
app.layout = html.Div(html.P('My dashboard content'))

def run_twisted_wsgi():
reactor_args = {'installSignalHandlers': False}
resource = WSGIResource(reactor, reactor.getThreadPool(), server.wsgi_app)
site = Site(resource)
reactor.listenTCP(8050, site)
reactor.run(**reactor_args)

if __name__ == '__main__':
run_twisted_wsgi = werkzeug.serving.run_with_reloader(run_twisted_wsgi)
run_twisted_wsgi()

它按预期在端口 8050 上运行。现在我想使用 nginx 将应用程序代理到 http://my.server/dash/my_dashboard .我在 /etc/nginx/sites-available/my.server.net 中使用以下配置(也链接到/etc/nginx/sites-enabled/my.server.net)

server {
listen 80;
server_name my.server.net;

location /dash/my_dashboard {
proxy_pass http://0.0.0.0:8050;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}

虽然这不会影响通过 http://my.server.net:8050 访问仪表板,但通过所需的`http://my.server.net/dash/my_dashboard 访问它给我一个“错误加载布局”而不是仪表板。

可能是 nginx 配置有问题,或者 dash 配置需要特殊处理。谁能给她一些建议?

我已经尝试了在 server.wsgi_app 上应用的建议的 proxyfixes

from werkzeug.contrib.fixers import ProxyFix

还有一个建议

class CustomProxyFix(object):
def __init__(self, app):
self.app = app

def __call__(self, environ, start_response):
host = environ.get('HTTP_X_FHOST', '')
if host:
environ['HTTP_HOST'] = host
return self.app(environ, start_response)

这两者都未能解决问题。也许也可以更改破折号配置,到目前为止我已经尝试改变这些设置

app.config.update({
'routes_pathname_prefix': '/',
'requests_pathname_prefix': '/',
})

没有成功。

最佳答案

这个问题已经在 Plot.ly 论坛上被问到,我通过稍微改变你尝试的一些设置在这个问题上取得了一些成功:

app.config.update({
# remove the default of '/'
'routes_pathname_prefix': '',

# remove the default of '/'
'requests_pathname_prefix': ''
})

此处提供更多信息:https://community.plot.ly/t/hosting-multiple-dash-apps-with-uwsgi-nginx/6758/2

关于python-3.x - 在 "Error loading layout"中使用 nginx 在 twisted 上代理破折号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51245019/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com