uwsgi协议魔术变量¶
你可以通过使用web服务器(或一般使用一个uwsgi兼容的客户端)传递的专用的变量来动态调整或配置uWSGI服务器的各个方面。
- 对于Nginx,使用
uwsgi_param <name> <value>;指令。 - 对于Apache,使用
SetEnv <name> <value>指令。
UWSGI_SCHEME¶
当不能可靠确定时,设置URL方案。例如,这可以用来强制使用HTTPS (使用值 https)。
UWSGI_SCRIPT¶
将指定的脚本作为一个映射到 SCRIPT_NAME 的新应用加载。该应用将明显只加载一次,而不是在每个请求都加载。
uwsgi_param UWSGI_SCRIPT werkzeug.testapp:test_app;
uwsgi_param SCRIPT_NAME /testapp;
UWSGI_MODULE 和 UWSGI_CALLABLE¶
加载一个新的应用 (定义为 module:callable),将其映射到 SCRIPT_NAME.
uwsgi_param UWSGI_MODULE werkzeug.testapp;
uwsgi_param UWSGI_CALLABLE test_app;
uwsgi_param SCRIPT_NAME /testapp;
UWSGI_CHDIR¶
在管理请求之前 chdir() 到指定的目录。
UWSGI_FILE¶
将指定的文件作为一个新的动态应用加载。
UWSGI_TOUCH_RELOAD¶
当指定的文件的修改时间自最后一个请求后发生改变时,重载uWSGI栈。
location / {
include uwsgi_params;
uwsgi_param UWSGI_TOUCH_RELOAD /tmp/touchme.foo;
uwsgi_pass /tmp/uwsgi.sock;
}
UWSGI_CACHE_GET¶
参见
为特定的键查看uWSGI换成。如果找到该键,它将会作为原始的HTTP输出返回,而不是请求的一般处理。
location / {
include uwsgi_params;
uwsgi_param UWSGI_CACHE_GET $request_uri;
uwsgi_pass 127.0.0.1:3031;
}
UWSGI_SETENV¶
为一个新的动态应用设置指定的环境变量。
注解
要在Python应用中使用这个功能,你需要启用 reload-os-env uWSGI选项。
在不使用一个WSGI文件/模块的情况下动态加载一个Django应用:
location / {
include uwsgi_params;
uwsgi_param UWSGI_SCRIPT django.core.handlers.wsgi:WSGIHandler();
uwsgi_param UWSGI_CHDIR /mydjangoapp_path;
uwsgi_param UWSGI_SETENV DJANGO_SETTINGS_MODULE=myapp.settings;
}
UWSGI_APPID¶
注解
自0.9.9起可用。
绕过 SCRIPT_NAME 和 VirtualHosting ,从而让用户在没有限制(或者不头疼)的情况下选择挂载点。
这个概念是非常通用的: UWSGI_APPID 是一个应用的标识符。如果在应用的内部列表中找不到它,那么要加载它。
server {
server_name server001;
location / {
include uwsgi_params;
uwsgi_param UWSGI_APPID myfunnyapp;
uwsgi_param UWSGI_FILE /var/www/app1.py
}
}
server {
server_name server002;
location / {
include uwsgi_params;
uwsgi_param UWSGI_APPID myamazingapp;
uwsgi_param UWSGI_FILE /var/www/app2.py
}
}