uwsgi协议魔术变量

你可以通过使用web服务器(或一般使用一个uwsgi兼容的客户端)传递的专用的变量来动态调整或配置uWSGI服务器的各个方面。

  • 对于Nginx,使用 uwsgi_param <name> <value>; 指令。
  • 对于Apache,使用 SetEnv <name> <value> 指令。

UWSGI_SCHEME

当不能可靠确定时,设置URL方案。例如,这可以用来强制使用HTTPS (使用值 https)。

UWSGI_SCRIPT

将指定的脚本作为一个映射到 SCRIPT_NAME 的新应用加载。该应用将明显只加载一次,而不是在每个请求都加载。

  1. uwsgi_param UWSGI_SCRIPT werkzeug.testapp:test_app;
  2. uwsgi_param SCRIPT_NAME /testapp;

UWSGI_MODULE 和 UWSGI_CALLABLE

加载一个新的应用 (定义为 module:callable),将其映射到 SCRIPT_NAME.

  1. uwsgi_param UWSGI_MODULE werkzeug.testapp;
  2. uwsgi_param UWSGI_CALLABLE test_app;
  3. uwsgi_param SCRIPT_NAME /testapp;

UWSGI_PYHOME

为一个 dynamic application 动态设置Python Virtualenv支持

参见

DynamicVirtualenv

UWSGI_CHDIR

在管理请求之前 chdir() 到指定的目录。

UWSGI_FILE

将指定的文件作为一个新的动态应用加载。

UWSGI_TOUCH_RELOAD

当指定的文件的修改时间自最后一个请求后发生改变时,重载uWSGI栈。

  1. location / {
  2. include uwsgi_params;
  3. uwsgi_param UWSGI_TOUCH_RELOAD /tmp/touchme.foo;
  4. uwsgi_pass /tmp/uwsgi.sock;
  5. }

UWSGI_CACHE_GET

参见

uWSGI缓存框架

为特定的键查看uWSGI换成。如果找到该键,它将会作为原始的HTTP输出返回,而不是请求的一般处理。

  1. location / {
  2. include uwsgi_params;
  3. uwsgi_param UWSGI_CACHE_GET $request_uri;
  4. uwsgi_pass 127.0.0.1:3031;
  5. }

UWSGI_SETENV

为一个新的动态应用设置指定的环境变量。

注解

要在Python应用中使用这个功能,你需要启用 reload-os-env uWSGI选项。

在不使用一个WSGI文件/模块的情况下动态加载一个Django应用:

  1. location / {
  2. include uwsgi_params;
  3. uwsgi_param UWSGI_SCRIPT django.core.handlers.wsgi:WSGIHandler();
  4. uwsgi_param UWSGI_CHDIR /mydjangoapp_path;
  5. uwsgi_param UWSGI_SETENV DJANGO_SETTINGS_MODULE=myapp.settings;
  6. }

UWSGI_APPID

注解

自0.9.9起可用。

绕过 SCRIPT_NAMEVirtualHosting ,从而让用户在没有限制(或者不头疼)的情况下选择挂载点。

这个概念是非常通用的: UWSGI_APPID 是一个应用的标识符。如果在应用的内部列表中找不到它,那么要加载它。

  1. server {
  2. server_name server001;
  3. location / {
  4. include uwsgi_params;
  5. uwsgi_param UWSGI_APPID myfunnyapp;
  6. uwsgi_param UWSGI_FILE /var/www/app1.py
  7. }
  8. }
  9.  
  10. server {
  11. server_name server002;
  12. location / {
  13. include uwsgi_params;
  14. uwsgi_param UWSGI_APPID myamazingapp;
  15. uwsgi_param UWSGI_FILE /var/www/app2.py
  16. }
  17. }