Sta*_*alk 6 python django nginx gunicorn
我正在尝试使用Django,nginx和gunicorn运行服务器。在开发服务器上,一切正常。但是在生产服务器上,gunicorn始终返回错误请求(400)。
我知道我需要设置ALLOWED_HOSTS变量,我做到了。我尝试使用正确的域,一个星号,甚至将DEBUG设置为True。但是,它始终是错误请求(400)。
这是我的nginx-config:
server {
listen 80;
location /static {
alias /home/username/sites/sub.domain.example.com/static;
}
location / {
proxy_set_header Host $http_host;
proxy_pass http://localhost:8000;
}
}
Run Code Online (Sandbox Code Playgroud)
我的wsgi-prod.py档案:
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "app.settings_prod")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
Run Code Online (Sandbox Code Playgroud)
该settings_prod.py文件(缩短):
DEBUG = False
ALLOWED_HOSTS=["*"]
Run Code Online (Sandbox Code Playgroud)
我通过以下方式(使用virtualenv)启动gunicorn:
gunicorn --bind 127.0.0.1:8000 app.wsgi_prod:application
Run Code Online (Sandbox Code Playgroud)
当我使用启动服务器时manage.py runserver --settings=app.settings_prod,可以访问该站点。gunicorn的错误日志未显示任何内容,而访问日志仅显示400。静态内容确实起作用。
您应该像这样告诉Nginx将主机传递给Gunicorn:
proxy_set_header Host $host;
Run Code Online (Sandbox Code Playgroud)
另外,我还将传递这些值(示例),以便您可以访问请求的IP:
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
Run Code Online (Sandbox Code Playgroud)
如果还没有,请检查您的Nginx日志。我希望这有帮助。
编辑:也尝试设置设置服务器名称,如:
server_name your_domain.com www.your_domain.com
Run Code Online (Sandbox Code Playgroud)
最后但并非最不重要的一点是,尝试像这样设置您的环境(在这种情况下为解决方案):
os.environ['DJANGO_SETTINGS_MODULE'] = "app.settings_prod"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3348 次 |
| 最近记录: |