configurationnginx(反向代理)和gunicorn之后,envvariables停止被检测(在Ubuntu上的Django应用程序)

在一个Ubuntu的机器上托pipe我的Django应用程序(使用postgres后端),当我使用命令gunicorn --bind 0.0.0.0:8080 --env DJANGO_SETTINGS_MODULE=myproject.settings myproject.wsgi:application启动gunicorn作为我唯一的web服务器时,我的envvariables被完全检测到gunicorn --bind 0.0.0.0:8080 --env DJANGO_SETTINGS_MODULE=myproject.settings myproject.wsgi:application

接下来,我安装了nginx并将其configuration为与gunicorn(使用数字海洋指南在这里 )的反向代理。 没有主pipe。 这个新的Web服务器configuration正确启动,除了现在它根本不检测envvariables。

想象一下,我的envvariables是awake = 1secret = abc123 。 我已经试过把export awake=1export secret=abc123放在/etc/environment (全局设置)的gunicorn.conf /etc/default/nginx中。 我也尝试将它们添加到nginx.conf作为env awake=1; env secret=abc123;

没有工作。

现在看来,这个nginx

除了TZvariables外,删除从其父进程inheritance的所有环境variables

资料来源: http : //nginx.org/en/docs/ngx_core_module.html#env难道这就是为什么我没有试图接近工作? 尽pipe如此, echo $awake在命令行上产生1,这告诉我可能已经设置了variables,但被绕过或忽略。

这变得非常令人沮丧。 任何人都可以帮我找出这一个呢? 提前致谢。


wsgi.py:

 import os os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myproject.settings") from django.core.wsgi import get_wsgi_application from dj_static import Cling application = Cling(get_wsgi_application()) 

gunicorn.conf:

 description "Gunicorn application server handling myproject" start on runlevel [2345] stop on runlevel [!2345] respawn setuid myuser setgid www-data chdir /home/myuser/directory/myproject/ exec /home/myuser/.virtualenvs/myvirtualenv/bin/gunicorn --chdir=/home/myuser/directory/ --workers 3 --bind unix:/home/myuser/directory/myproject/myproject.sock --env DJANGO_SETTINGS_MODULE=myproject.settings myproject.wsgi:application 

在/ etc / nginx的/网站可用/ myproject的:

 server { listen 80; server_name myapp.cloudapp.net; location = /favicon.ico { access_log off; log_not_found off; } location /static/ { root /home/myuser/directory/myproject; } location / { include proxy_params; proxy_pass http://unix:/home/myuser/directory/myproject/myproject.sock; } } 

注意:如果您需要,请询问更多信息

我build议把你的envvariables设置在你运行gunicorn的地方,像这样: gunicorn --bind0.0.0.0:8080 -e var1=value1 -e var2=value2 myproject.wsgi:application 。 这应该适合你。