我正在將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