gpt4 book ai didi

python - 根目录下静态站点的 Nginx 配置,子目录下的 Flask 应用

转载 作者:太空狗 更新时间:2023-10-29 17:32:30 26 4
gpt4 key购买 nike

我想在我的根 public_html 目录中有一个静态站点,然后在它们自己的子目录中有 Flask 应用程序(例如 public_html/foo)。静态根目录按预期运行。

我花了几个小时编辑 nginx 配置以使 Flask 应用程序正常工作,但总是回到同一个地方,即当我迁移到 mysite/foo 时,以下代码总是返回“Bad Config”。我希望它返回“Hello World!”

如果我更改 nginx 配置以使服务器根目录位于 public_html/foo 中,Flask 应用程序将按预期工作(即 mysite.com 返回“Hello World!”)。在下面的配置中,当我认为它应该指向 mysite.com/foo 时,Flask 索引仍然指向 mysite.com

/etc/nginx/sites-enabled/mysite

upstream frontends {
# gunicorn
server 127.0.0.1:18000;
}

server {
listen 80;
server_name www.mysite.com;
rewrite ^/(.*) http://mysite.com$1 permanent;
}

server {
listen 80;
server_name mysite.com;
server_name_in_redirect off;
root /home/ubuntu/public_html/mysite;

access_log /home/ubuntu/logs/mysite/access.log;
error_log /home/ubuntu/logs/mysite/error.log;

location / {
index index.html;
}
location /foo {
try_files $uri @foo;
}
location @foo {
proxy_pass http://frontends;
break;
}
}

/home/ubuntu/public_html/mysite/foo/foo.py

from flask import Flask
from flask import render_template
app = Flask(__name__)

@app.route('/')
def index():
return 'Hello World!'

@app.route('/foo')
def test():
return 'Bad config'

@app.errorhandler(404)
def page_not_found(e):
return render_template('404.html'), 404

if __name__ == '__main__':
app.run()

/home/ubuntu/public_html/mysite/foo/deploy.py

workers = 2
bind = '127.0.0.1:18000'
proc_name = 'foo_gunicorn'
pidfile = 'foo.pid'

Flask 使用 gunicorn -c deploy.py foo:app 启动

更新

添加 rewrite/foo/(.*)/$1 break; 到 nginx location/foo block 使 mysite/foo 返回“Hello World”,但是它的所有链接(例如那些从模板到样式表的链接)仍然指向站点根目录(例如 mysite/static/style.css 而不是 mysite/foo/static/style.css)

最佳答案

从 mitsuhiko (Flask lead dev) 得到了答案: http://flask.pocoo.org/snippets/35/

您需要在您的 Flask 应用程序中定义一个 ReverseProxied 类,并将几行 proxy-set-header 添加到 nginx 配置中的 location/foo block 。

关于python - 根目录下静态站点的 Nginx 配置,子目录下的 Flask 应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7558249/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com