Jas*_*get 13 python nginx flask gunicorn
我想在我的root 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的/启用的站点 - /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;
}
}
Run Code Online (Sandbox Code Playgroud)
/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()
Run Code Online (Sandbox Code Playgroud)
/home/ubuntu/public_html/mysite/foo/deploy.py
workers = 2
bind = '127.0.0.1:18000'
proc_name = 'foo_gunicorn'
pidfile = 'foo.pid'
Run Code Online (Sandbox Code Playgroud)
Flask推出了 gunicorn -c deploy.py foo:app
添加rewrite /foo/(.*) /$1 break;到nginx location /foo块使得mysite/foo返回'Hello World',但是它的所有链接(例如来自模板的样式表的链接)仍然指向站点根目录(例如mysite/static/style.css而不是mysite/foo) /static/style.css)
| 归档时间: |
|
| 查看次数: |
6626 次 |
| 最近记录: |