您需要在您的烧瓶应用中添加 APPLICATION_ROOT 参数:
from flask import Flask, url_for
from werkzeug.serving import run_simple
from werkzeug.wsgi import DispatcherMiddleware
app = Flask(__name__)
app.config['APPLICATION_ROOT'] = '/cn'
如果您需要在服务器上托管多个应用程序,您可以配置 nginx 以将所有请求重定向到由 gunicorn 提供的特定烧瓶应用程序,如下所示。 (如果您的服务器仅托管一个应用程序,则没有必要)在此处了解有关 gunicorn 和 nginx 的更多信息:https://docs.gunicorn.org/en/stable/deploy.html
server {
listen 8000;
server_name example.com;
proxy_intercept_errors on;
fastcgi_intercept_errors on;
location / {
include proxy_params;
proxy_pass http://unix:/path_to_example_flask_app_1/app.sock;
}
location /cn/{
include proxy_params;
proxy_pass http://unix:/path_to_example_flask_app_cn/app.sock;
}
}
使用 gunicorn 为烧瓶应用提供服务:
这里有一个完整的例子:https://www.digitalocean.com/community/tutorials/how-to-serve-flask-applications-with-gunicorn-and-nginx-on-ubuntu-18-04
#move into project directory
/path_to_gunicorn/gunicorn --workers 3 --bind unix:app.sock -m 007 run:app
如果您改用 flask_restful,您也可以通过以下方式指定根路径:
from flask import Flask
from flask_restful import Api
app = Flask(__name__)
app.debug = False
api = Api(app, prefix='/cn')
api.add_resource(ResourceClass, '/example_path') #will be served when the resource is requested at path /cn/example_path
if __name__ == '__main__':
app.run(host="0.0.0.0", port=8000)