我是 Nginx 和 Gunicorn 的新手......
我正在尝试在某些前缀上提供 Flask 应用程序......
前任:https://myweb.com/flask/prefix/
除了没有加载静态文件之外,一切工作正常......
我的 nginx 站点配置如下所示
location /flask/prefix/ {
include proxy_params;
proxy_pass http://unix:/home/user/flask_config/flask_socket_file.sock:/;
}
当我使用 Firefox 开发人员工具检查网络部分时,我发现它正在加载静态文件的主页路径/
而不是这个/flask/prefix
......
例子:
/static/image.png (即https://myweb.com/static/image.png)
但它应该是/flask/prefix/static/image.png(即https://myweb.com/flask/prefix/static/image.png)。
然而我试图:/
在语句末尾删除proxy_pass
...它以 501 错误结束....
请让我知道我做错了什么......
我按照以下步骤使用 Nginx 配置 Flask 应用程序这里
答案1
我终于找到了解决方案......
在这里分享以便能够帮助别人......
在你的 wsgi.py 文件中...
from start import app
class PrefixMiddleware(object):
def __init__(self, app, prefix=''):
self.app = app
self.prefix = prefix
def __call__(self, environ, start_response):
if environ['PATH_INFO'].startswith(self.prefix):
environ['PATH_INFO'] = environ['PATH_INFO'][len(self.prefix):]
environ['SCRIPT_NAME'] = self.prefix
return self.app(environ, start_response)
else:
start_response('404', [('Content-Type', 'text/plain')])
return ["This url does not belong to the app.".encode()]
app.wsgi_app = PrefixMiddleware(app.wsgi_app, prefix='/flask/prefix')
if __name__ == "__main__":
app.run()
用这个它应该可以工作...
我参考了以下解决方案这里..