在 nginx 上为 django 项目设置 SSL

在 nginx 上为 django 项目设置 SSL

我想为 Nginx 设置 ssl,我的项目是 Django,并且我还使用 gunicorn 作为 wsgi Http 服务器。

我在我的settings.py代码中添加了以下几行:

CSRF_COOKIE_SECURE = True
SESSION_COOKIE_SECURE = True

我不知道是否有必要这样做,然后我按照以下形式配置我的Nginx:

server {
    listen 80;
    server_name <name>;
    return 301 https://$host$request_uri;
}

server {
    #listen 80;
    listen 443 default ssl;
    client_max_body_size 4G;

    server_name <name>;

    #ssl                  on;
    ssl_certificate      /etc/nginx/ssl/ssl.crt;
    ssl_certificate_key  /etc/nginx/ssl/ssl.key;

    ssl_session_timeout  5m;

    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers   on;
    keepalive_timeout 5;

# path for static files
    root /home/deploy/;

    location /static/ {
    }
    location /media/ {
    }

    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        #proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_pass http://app_server;
    }

    error_page 500 502 503 504 /500.html;
    location = /500.html {
        root /home/deploy/static;
    }
}

我认为 Nginx 配置是正确的,因为它将 80 重定向到 443,但什么也没发生,80 请求发送,然后 Nginx 将其重定向到 443,但什么也没发生,它无法连接到 gunicorn 或项目。

我应该用 gunicorn 做些什么吗?我的证书是自签名的,或者我该怎么办?

问候 :)

答案1

您需要将此部分添加到您的 nginx 配置中。upstream用于代理对您应用的请求,引用如下proxy_pass

    upstream app_server {
        server 127.0.0.1:6000; // your gunicorn server
    }

相关内容