2012-12-01 3 views
17

저는 이것에 대해 새롭고 정적 파일을 제공하기 위해서만 nginx를 사용했습니다. 나는 플라스크와 gunicorn을 설치했다. gunicorn -b 127.0.0.2:8000 hello:app을 실행 한 다음 서버에서 wget하면 제대로 작동합니다. 그러나 브라우저에서 액세스하려고하면 404 오류가 반환됩니다 (루트에서 locatet 인 WordPress 사이트를 호스팅하는 서버에서 실행 중입니다).nginx와 gunicorn으로 플라스크 앱을 실행하십시오.

플라스크 응용 프로그램 :

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() 

그리고 내 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; 
    } 

나는이 모든 관련 정보를한다 바랍니다. 그렇지 않다면 말하십시오. 감사!

실행 gunicorn이 소켓을 사용 daemonized : 내가 Nginx에 내 플라스크 애플리케이션을 제공하는 방법을

답변

23

이입니다

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

구성을 전환하고 여전히 반환 : 관련의 nginx의 설정

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

404 찾을 수 없음 오류 :/ – filipdobranic

+1

나는 그게 뭔지 알아 냈어 - 나는/flask2에서 nginx config에 내 위치를 가졌고 내 flask app에서는 @ app.route ('/')도 있어야했다./flask2 – filipdobranic

+0

또한 app.wsgi_app = ProxyFix (app.wsgi_app) 할 필요도 없습니다. 그렇게하기위한 목적은 무엇입니까? – TheOne