You have configured nginx to answer on /apps/app1, so for the bottle point of view your requests are /apps/app1/hello... instead of /hello
No brainer solution:
mount = /apps/app1=app.py
manage-script-name = true
and remove the 'file' directive in uwsgi.ini
If you want to understand why WSGI works in this way, you can check how SCRIPT_NAME and PATH_INFO are managed