我正在将apache2和mod_wsgi环境中的Flask应用程序移动到Nginx,并且在使url正常工作时遇到问题。在非域根URL上运行Flask应用程序
我想我的应用程序的根页面出现在,例如,http://example.org/myapp/
我@ app.route装饰是如@app.route('/')
为我的应用程序的根(http://example.org/myapp
)和@app.route('/subpage')
为像http://example.org/myapp/subpage
的子页面。
在apache下,这个所有的“刚刚工作”,我拨打url_for()
产生的URLS完成了工作。现在
从url_for()
我的网址的格式为:href="/subpage"
,这是送我到域根的http://example.org/subpage
而不是我想要的东西:href="./subpage"
,这将使我http://example.org/myapp/subpage
。
对于它的价值,从我的Nginx的配置相关的部分是:
location /myapp/ {
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-Host $server_name;
proxy_pass http://127.0.0.1:8001/;
}
我服务与gunicorn应用。
就目前情况而言,访问http://example.org/myapp/
会将我带到我的Flask应用程序的根页面,但所有其他URL都会将我带回域级别:http://example.org/subpage
。
我曾尝试将APPLICATION_ROOT设置为“/ myapp”,但似乎没有效果。我在做什么(可怕的)错误?
myapp/root是否在apche2中为您工作,因为我已经使用了它,并且我还必须使用该代码段来获取u rl_for在我的apache2中正常工作? – tonka 2015-05-14 08:39:02