Konfigurace Nginx pro statické míst v kořenovém adresáři, baňky aplikace v podadresářích

hlasů
13

Chtěl bych mít statickou stránku v mém kořenový public_html adresáře, pak baňky apps v jejich vlastních podadresářů (např public_html / foo). Statické funkce kořenový adresář, jak se očekávalo.

Jsem strávil hodiny editaci konfigurace Nginx dostat Baňka aplikace funguje, ale vždy skončí zpátky na stejném místě, a sice, že následující kód vždy vrátí ‚Bad config‘, když přejdu na mysite / foo. Chci, aby se vrátit ‚Hello World!‘

Mám-li změnit konfiguraci Nginx, aby kořenový server v public_html / foo, baňky aplikace pracují podle očekávání (tj mysite.com zisky ‚Hello World!‘). V následující konfiguraci index baňky stále odkazuje na mysite.com když se domnívám, že by měla odkazovat na mysite.com/foo

/ Etc / nginx / sites-povolen / 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'

Baňka je zahájen gunicorn -c deploy.py foo:app

Aktualizace

Přidání rewrite /foo/(.*) /$1 break;na Nginx location /foobloku činí návratnost mysite / foo ‚Hello World‘, nicméně všechny jeho vazby (jako jsou ty, na stylů ze šablony) stále poukazují na kořenu webu (např mysite / statický / style.css namísto mysite / foo /static/style.css)

Položena 26/09/2011 v 17:34
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
11

Dostal odpověď od Mitsuhiko (Flask olovo dev): http://flask.pocoo.org/snippets/35/

Je potřeba definovat ReverseProxied třídu ve svém baňky aplikaci a přidat několik proxy-set-headerřádků do location /foobloku v Nginx config.

Odpovězeno 27/09/2011 v 17:55
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more