2012-12-01 16 views
17

Jestem nowy w tym i korzystałem tylko z nginx do udostępniania plików statycznych. Mam teraz zainstalowaną kolbę i gunicorn. Jeśli uruchomię gunicorn -b 127.0.0.2:8000 hello:app, a następnie wget to z serwera, to działa dobrze. Jeśli jednak spróbuję uzyskać do niego dostęp z przeglądarki, zwraca błąd 404 (uruchamiam to na serwerze, na którym znajduje się strona z wordpress, która jest zlokalizowana w katalogu głównym).Uruchamianie aplikacji kolby za pomocą nginx i gunicorn

Aplikacja kolba:

from flask import Flask 
from werkzeug.contrib.fixers import ProxyFix 
app = Flask(__name__) 

@app.route('/') 
def hello(): 
    return "Hello world!" 

app.wsgi_app = ProxyFix(app.wsgi_app) 

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

A odpowiednia część mojej konfiguracji nginx:

location /flask { 
       proxy_set_header  Host   $http_host; 
       proxy_set_header  X-Real-IP  $remote_addr; 
       proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_\ 
for; 
       proxy_pass    http://127.0.0.2:8000; 
       proxy_redirect   off; 
    } 

Mam nadzieję, że to wszystko jest istotne informacje. Jeśli nie, powiedz to. Dzięki!

Odpowiedz

23

ten sposób służę moje kolba aplikacje w Nginx:

Run gunicorn daemonized użyciu gniazda:

sudo gunicorn app:app --bind unix:/tmp/gunicorn_flask.sock -w 4 -D 

Powiązane nginx config:

upstream flask_server { 
     # swap the commented lines below to switch between socket and port 
     server unix:/tmp/gunicorn_flask.sock fail_timeout=0; 
     #server 127.0.0.1:5000 fail_timeout=0; 
    } 
    server { 
     listen 80; 
     server_name www.example.com; 
     return 301 $scheme://example.com$request_uri; 
    } 

    server { 
     listen 80; 
     client_max_body_size 4G; 
     server_name example.com; 

     keepalive_timeout 5; 

     # path for static files 
     location /static { 
      alias /path/to/static; 
      autoindex on; 
      expires max; 
     } 

     location/{ 
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
      proxy_set_header Host $http_host; 
      proxy_redirect off; 

      if (!-f $request_filename) { 
       proxy_pass http://flask_server; 
       break; 
      } 
     } 
    } 

} 
+0

Switched konfigurację i wciąż powraca a 404 Not Found error:/ – filipdobranic

+1

Wyjaśniłem, co to było - miałem swoją lokalizację w konfiguracji nginx w/flask2, a następnie w mojej aplikacji z kolbą @ app.route ("/"), gdy powinno być również/flask2 – filipdobranic

+0

Ponadto, nigdy nie musiałem robić app.wsgi_app = ProxyFix (app.wsgi_app). Jaki jest cel tego? – TheOne

Powiązane problemy