uwsgi protocol magic variables¶
You can dynamically tune or configure various aspects of the uWSGI server using special variables passed by the web server (or in general by a uwsgi compliant client).
- For Nginx, the uwsgi_param <name> <value>; directive is used.
- For Apache, the SetEnv <name> <value> directive is used.
UWSGI_SCHEME¶
Set the URL scheme when it cannot be reliably determined. This may be used to force HTTPS (with the value https), for instance.
UWSGI_SCRIPT¶
Load the specified script as a new application mapped to SCRIPT_NAME. The app will be obviously only be loaded once, not on each request.
uwsgi_param UWSGI_SCRIPT werkzeug.testapp:test_app;
uwsgi_param SCRIPT_NAME /testapp;
UWSGI_MODULE and UWSGI_CALLABLE¶
Load a new app (defined as module:callable) mapped into SCRIPT_NAME.
uwsgi_param UWSGI_MODULE werkzeug.testapp;
uwsgi_param UWSGI_CALLABLE test_app;
uwsgi_param SCRIPT_NAME /testapp;
UWSGI_PYHOME¶
Dynamically set the Python Virtualenv support for a dynamic application.
See also
DynamicVirtualenv
UWSGI_CHDIR¶
chdir() to the specified directory before managing the request.
UWSGI_FILE¶
Load the specified file as a new dynamic app.
UWSGI_TOUCH_RELOAD¶
Reload the uWSGI stack when the specified file’s modification time has changed since the last request.
location / {
include uwsgi_params;
uwsgi_param UWSGI_TOUCH_RELOAD /tmp/touchme.foo;
uwsgi_pass /tmp/uwsgi.sock;
}
UWSGI_CACHE_GET¶
See also
Check the uWSGI cache for a specified key. If the value is found, it will be returned as raw HTTP output instead of the usual processing of the request.
location / {
include uwsgi_params;
uwsgi_param UWSGI_CACHE_GET $request_uri;
uwsgi_pass 127.0.0.1:3031;
}
UWSGI_SETENV¶
Set the specified environment variable for a new dynamic app.
Note
To allow this in Python applications you need to enable the reload-os-env uWSGI option.
Dynamically load a Django app without using a WSGI file/module:
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¶
Note
Available since 0.9.9.
Bypass SCRIPT_NAME and VirtualHosting to let the user choose the mountpoint without limitations (or headaches).
The concept is very generic: UWSGI_APPID is the identifier of an application. If it is not found in the internal list of apps, it will be loaded.
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
}
}