我有一个Pyramid应用程序,它是由一个Paste ini构建的,由uWSGI提供,由nginx代理.它很棒.这是nginx配置:
server {
listen 80;
server_name localhost;
access_log /var/log/myapp/nginx.access.log;
error_log /var/log/myapp/nginx.error.log warn;
location / {
uwsgi_pass localhost:8080;
include uwsgi_params;
}
}
Run Code Online (Sandbox Code Playgroud)
这是uWSGI ini配置:
[uwsgi]
socket = 127.0.0.1:8080
virtualenv = /srv/myapp/venv
die-on-term = 1
master = 1
logto = /var/log/myapp/uwsgi.log
Run Code Online (Sandbox Code Playgroud)
此配置位于Pyramid的production.ini中,因此我使用以下命令为应用程序提供服务:
uwsgi --ini-paste-logged production.ini
Run Code Online (Sandbox Code Playgroud)
所有这一切都很好.
一个简单的改变.我想将此应用程序作为子文件夹而不是作为根目录提供.http://localhost我希望从中提供服务,而不是从中提供服务http://localhost/myapp.
现在一切都破了.
如果我将nginx location指令更改/为/myapp或/myapp/,我得到404,因为WSGI应用程序接收所有前缀的uris /myapp.
uWSGI解决方案似乎是将WSGI callable挂载到子文件夹上,然后传递--manage-script-name选项,此时uWSGI应该从uri中神奇地剥离子文件夹前缀并修复问题.
但是,我发现的文档和所有其他资源只给出了表单的示例:
mount = /myapp=myapp.py
Run Code Online (Sandbox Code Playgroud)
我没有包含WSGI可调用的myapp.py,因为我的可调用是由PasteDeploy构建的.
那么, …