bottle uwsgi nginx app返回404

时间:2014-03-23 17:47:28

标签: nginx http-status-code-404 uwsgi bottle

好的,我已经四处走动,不知道该做什么:也许有人可以提供帮助。 我试图通过uwsgi和nginx运行一个瓶子应用程序。如果我用瓶子服务器运行它就可以了,就像这样; python app.py 然后将浏览器指向主机名:8080 但是当通过nginx / uwsgi运行时,转到: 主机名/应用/ APP1 我在APP中获得404错误处理程序,报告404错误。所以它运行应用程序:它似乎没有匹配任何

route" decorators"。这是应用代码,位于/mnt/wd/www/dev/apps/app1/app.py:

import bottle
import os

bottle.debug(True)

app = bottle.Bottle()

@app.route('/')
def default():
  return 'app1 (bottle): I am here. '

@app.route('/hello')
@app.route('/hello/')
@app.route('/hello/<name>')
def greet(name='Stranger'):
  return 'Hello, %s, how are you?' % name

@app.route('/show')
@app.route('/show/<input>')
def show(input=''):
  return 'You entered: %s' % input

@app.error(404)
def error404(error):
   return '<strong>app1: 404 error returned:</strong> %s' %error

if __name__ == '__main__':
    port = int(os.environ.get('PORT', 8080))

app.run(host =&#39; 0.0.0.0&#39;,port = port,debug = True)

这是我的uwsgi ini文件:

[uwsgi]
socket = /run/uwsgi/app/app1/socket
chmod-socket = 777 
chdir = /mnt/wd/www/dev/apps/app1/
file = app.py
callable = app
master = true
uid = www-data

gid = www-data

,这是nginx站点文件的相关部分:

    location /apps {
   #    try_files @uri @uwsgi;
    }

    location /apps/app1 {
      include uwsgi_params;
      access_log /var/log/nginx/app1-access.log;
      error_log /var/log/nginx/app1-error.log;
      uwsgi_pass unix:/run/uwsgi/app/app1/socket;

}

那么:你能告诉我什么?感谢您的任何帮助,您可以提供。甚至可以告诉我应用程序认为它的内容 因为网址会有所帮助。

1 个答案:

答案 0 :(得分:1)

你已经配置了nginx来回答/ apps / app1,所以从瓶子的角度来看你的请求是/ apps / app1 / hello ...而不是/ hello

没有明智的解决方案:

mount = /apps/app1=app.py
manage-script-name = true

并删除&#39;文件&#39; uwsgi.ini中的指令

如果您想了解WSGI以这种方式运作的原因,您可以查看SCRIPT_NAME和PATH_INFO的管理方式