title: Getting 404 with Flask, Nginx and uwsgi
body: <p>I have a <code>Flask</code> application in <code>/find_bili_user/app.py</code> with the virtualenv in <code>/python_envs/env1/</code>,</p>
  
  <p><code>app.py</code>:</p>
  
  <pre><code>from flask import Flask, jsonify, request, make_response
  
  from biliuser import getdanmu
  
  app = Flask('__name__')
  
  
  @app.route('/find_bili_user.json', methods=['GET'])
  def get_user():
      avid = request.args.get('avid')
      if not avid or not avid.isdigit():
          return invalid_avid()
      else:
          message = getdanmu(int(avid))
          if not message:
              return failed()
          else:
              response = jsonify(message)
              return response
  
  
  @app.errorhandler(400)
  def invalid_avid():
      return make_response(jsonify({'error': 'invalid avid.'}), 400)
  
  
  @app.errorhandler(400)
  def failed():
      return make_response(jsonify({'error': 'failed parsing comments.'}), 400)
  
  
  if __name__ == '__main__':
      app.run()
  </code></pre>
  
  <p>My uwsgi configs:</p>
  
  <pre><code>[uwsgi]
  chdir = /find_bili_user
  app = app
  module = %(app)
  home = /python_envs/env1
  pythonpath = %(chdir) 
  socket = %(chdir)/app_uwsgi.sock
  chmod-socket    = 666
  callable = app
  logto = /var/log/uwsgi/%n.log
  processes = 4
  threads = 2
  </code></pre>
  
  <p>and nginx configs:</p>
  
  <pre><code>server {
      listen      80;
      charset     utf-8;
      client_max_body_size 75M;
      location / {
          include uwsgi_params;
          uwsgi_pass unix:/find_bili_user/app_uwsgi.sock;
      }
  }
  </code></pre>
  
  <p>when i start nginx and uwsgi, I get the following log:</p>
  
  <pre><code>*** Starting uWSGI 2.0.13.1 (64bit) on [Tue Jun 21 08:20:59 2016] ***
  compiled with version: 4.8.4 on 21 June 2016 07:28:15
  os: Linux-3.13.0-83-generic #127-Ubuntu SMP Fri Mar 11 00:25:37 UTC 2016
  nodename: vultr.guest
  machine: x86_64
  clock source: unix
  detected number of CPU cores: 1
  current working directory: /find_bili_user
  detected binary path: /python_envs/env1/bin/uwsgi
  chdir() to /find_bili_user
  *** WARNING: you are running uWSGI without its master process manager ***
  your processes number limit is 5764
  your memory page size is 4096 bytes
  detected max file descriptor number: 1024
  lock engine: pthread robust mutexes
  thunder lock: disabled (you can enable it with --thunder-lock)
  uwsgi socket 0 bound to UNIX address /find_bili_user/app_uwsgi.sock fd 3
  Python version: 3.4.3 (default, Oct 14 2015, 20:31:36)  [GCC 4.8.4]
  Set PythonHome to /python_envs/env1
  Python main interpreter initialized at 0x21e8b30
  python threads support enabled
  your server socket listen backlog is limited to 100 connections
  your mercy for graceful operations on workers is 60 seconds
  mapped 332224 bytes (324 KB) for 8 cores
  *** Operational MODE: preforking+threaded ***
  added /find_bili_user/ to pythonpath.
  WSGI app 0 (mountpoint='') ready in 0 seconds on interpreter 0x21e8b30 pid: 1503 (default app)
  *** uWSGI is running in multiple interpreter mode ***
  spawned uWSGI worker 1 (pid: 1503, cores: 2)
  spawned uWSGI worker 2 (pid: 1505, cores: 2)
  spawned uWSGI worker 3 (pid: 1506, cores: 2)
  spawned uWSGI worker 4 (pid: 1507, cores: 2)
  </code></pre>
  
  <p>I can access to the IP address and get a nginx welcome page, but <code>xx.xx.xx.xx/find_bili_user.json</code> returns error 404,it seems that nginx isn't sending requests to uwsgi. Is there anything wrong with my configs?</p>