build_absolute_uri 在反向代理后面使用 HTTPS

Sat*_*nix 5 django nginx gunicorn

我在反向代理后面提供我的 django 应用程序

互联网 -> Nginx -> Gunicorn socket -> Django 应用

在 nginx 配置中:

upstream my_server {
  server unix:/webapps/my_app/run/gunicorn.sock fail_timeout=0;
}
Run Code Online (Sandbox Code Playgroud)

SSL 是在 nginx 级别使用 certbot 设置的。

request.build_absolute_uriinviews.py生成 http 链接。如何强制它生成 https 链接?

Ali*_*Gol 32

X-Forwarded默认情况下,Django 会根据Django 文档忽略所有标头

X-Forwarded-Host通过设置USE_X_FORWARDED_HOST = True和 set强制读取标头SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')。所以在settings.py

USE_X_FORWARDED_HOST = True
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
Run Code Online (Sandbox Code Playgroud)