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