nginx Django -request.is_secure总是返回False

chhqkbe1  于 2023-01-20  发布在  Nginx
关注(0)|答案(1)|浏览(186)

我在DigitalOcean VPS上运行Django项目,使用Nginx和Gunicorn,我确定我使用的是HTTPS,但由于某种原因,使用request.is_secure()总是返回Falserequest.scheme返回HTTP,即使我确定它是VPS。
这可能是什么原因呢?下面是我的nginx配置:

server {
    listen 80;
    server_name MY.SERVER.com;

    location / {
        include proxy_params;
        proxy_set_header        X-Forwarded-Proto           $scheme;
        proxy_pass http://unix:/var/www/proj/myproj.sock;

    }
}

而且我还确保添加到我的Django设置SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')。任何建议都是感激的

3pvhb19x

3pvhb19x1#

我遇到了同样的问题。而且,看起来,我找到了为什么它不能像预期的那样工作。
根据文档,$scheme等于httphttps
对于location,它在server中声明,监听80端口,我们得到$scheme等于http .然后,AFAIU,Django接收到HTTP_X_FORWARDED_PROTO报头,等于http,Django将其视为不安全(即request.is_secure()总是返回False)。好吧,至少,当我做了以下更改时,它开始工作得很好:

proxy_set_header X-Forwarded-Proto "https";

相关问题