瓶子uwsgi nginx应用程序返回404

瓶子uwsgi nginx应用程序返回404,nginx,http-status-code-404,uwsgi,bottle,Nginx,Http Status Code 404,Uwsgi,Bottle,好吧,我在这件事上走来走去,不知道还能做什么:也许有人能帮上忙。 我正在尝试通过uwsgi和nginx运行一个瓶子应用程序。如果我用瓶子服务器运行它,它工作得很好,就像这样; python app.py 然后将浏览器指向主机名:8080 但当通过nginx/uwsgi运行时,请转到: 主机名/应用程序/应用程序1 我在应用程序中得到404错误处理程序,它报告404错误。因此,它正在运行应用程序:它似乎与任何一个应用程序都不匹配 路线“装饰者”。以下是驻留在/mnt/wd/www/dev/apps

好吧,我在这件事上走来走去,不知道还能做什么:也许有人能帮上忙。 我正在尝试通过uwsgi和nginx运行一个瓶子应用程序。如果我用瓶子服务器运行它,它工作得很好,就像这样; python app.py 然后将浏览器指向主机名:8080 但当通过nginx/uwsgi运行时,请转到: 主机名/应用程序/应用程序1 我在应用程序中得到404错误处理程序,它报告404错误。因此,它正在运行应用程序:它似乎与任何一个应用程序都不匹配

路线“装饰者”。以下是驻留在/mnt/wd/www/dev/apps/app1/app.py中的应用程序代码: gid=www数据 以下是nginx站点文件的相关部分: } 那么:你能告诉我什么?谢谢你能提供的帮助。甚至可以告诉我应用程序认为它得到了什么
因为url会很有帮助。

您已将nginx配置为在/apps/app1上应答,因此从瓶子角度来看,您的请求是/apps/app1/hello。。。而不是/你好

无脑解决方案:

mount = /apps/app1=app.py
manage-script-name = true
并删除uwsgi.ini中的“file”指令

如果您想了解WSGI以这种方式工作的原因,可以检查脚本名称和路径信息是如何管理的

[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;
mount = /apps/app1=app.py
manage-script-name = true