我正在开发在服务器子路由上运行的Flask应用。
以下是该应用的最低版本:
from flask import *
app = Flask(__name__, root_path="/test")
app.config["APPLICATION_ROOT"] = "/test"
@app.route("/")
@app.route("/index")
def index():
return url_for("index")
@app.route("/test")
def test():
return url_for("test")
if __name__ == "__main__":
app.run(port=5000, debug=True)
这是/etc/nginx/nginx.conf
的相关部分:
http {
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name localhost;
location /test {
return 302 /test/;
}
location /test/ {
proxy_pass http://127.0.0.1:5000/;
}
}
}
这样,当我访问http://localhost/test/时,Flask应用程序将在/
处收到传入请求,这是由nginx代理的。这是在nginx级别配置的,无法更改,因此应用程序收到的内容将始终被截断/test
前缀。
但是我需要url_for
生成带有前缀的 网址。我目前在/index
看到/test/
,但我期望的是/test/index
。
如代码中所示,APPLICATION_ROOT
对我不起作用。
我拥有最新的Flask(1.0.2)和依赖项。