瓶uwsgi nginx的应用程序返回404

好吧,我已经四处奔波,不知道还有什么可以做的:也许有人可以帮忙。 我试图通过uwsginginx运行一个瓶子的应用程序。 如果我用瓶子服务器运行它就好了, python app.py,然后将浏览器指向hostname:8080,但是当通过nginx / uwsgi运行,并转到:hostname / apps / app1我得到404error handling程序在应用程序内,报告404错误。 所以它运行的应用程序:它似乎不匹配的任何

路由“装饰者”。 应用程序代码位于/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 ='0.0.0.0',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; 

}

那么,你能告诉我什么? 感谢您的任何帮助,您可以提供。 甚至有一些东西告诉我,应用程序认为这是因为该url会有所帮助。

你已经配置nginx在/ apps / app1上回答,所以对于瓶子的角度来说你的请求是/ apps / app1 / hello …而不是/ hello

没有更好的解决办法:

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

并移除uwsgi.ini中的'file'指令

如果你想了解为什么WSGI以这种方式工作,你可以检查SCRIPT_NAME和PATH_INFO是如何管理的