Django和SSL问题

2024-06-16 09:24:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我计划通过信用卡收费销售产品,因此使用SSL对Django驱动的网站至关重要。我对此很天真。

我最初的django安装计划是使用Apache作为web服务器,并使用mod_wsgi与django通信,后者是Apache再次提供服务的静态媒体。在SSL协议出台之前,一切看起来都很好。

我将使用SSL协议对用户帐户配置页面,整个购买顺序,也许在django管理员。

我查过官方文件并用谷歌搜索过,但答案相当混乱。

  • 对此设置,建议使用什么方式实现SSL?
  • 对这个第一次使用SSL的网站实现者有什么建议吗?
  • this page看来,它们似乎已经将Nginx包含到堆栈中。没有它就做不到吗?

谢谢


Tags: django服务器webmod协议sslwsgi产品
3条回答

对于通过Google的用户,下面是Nginx的一个配置示例:

server {
    listen 443 ssl default;
    server_name example.com;
    ssl on;
    ssl_certificate /etc/nginx/server.crt;
    ssl_certificate_key /etc/nginx/server.key;
    add_header  Cache-Control "public, must-revalidate";
    # add_header  Cache-Control "no-cache";
    expires     1d;
    add_header Strict-Transport-Security "max-age=2592000; includeSubdomains";

    location / {
        fastcgi_pass   localhost:8000;
        fastcgi_param PATH_INFO $fastcgi_script_name;
        fastcgi_param REQUEST_METHOD $request_method;
        fastcgi_param CONTENT_TYPE $content_type;
        fastcgi_param CONTENT_LENGTH $content_length;
        fastcgi_param  SERVER_PORT        $server_port;
        fastcgi_param  SERVER_NAME        $server_name;
        fastcgi_param  SERVER_PROTOCOL    $server_protocol;
        fastcgi_pass_request_headers on;
        # include fastcgi_params;
    }

    location /static {
        root /home/myapp/application;
    }

    location = /favicon.ico {
        root /home/myapp/application/assets;
        access_log off;
        log_not_found off;
    }

}

Django不处理SSL。Apache将透明地为您处理这个问题,Django将照常工作。您可以使用request.is_secure()在视图中检查SSL。

但是,您必须在适当的地方提供链接作为https url。您还可能希望将某些http页面重定向到https页面(如django管理屏幕)。

我已经使用Apache的mod_sslmod_wsgi在SSL上部署了Django应用程序。

我不是Apache专家,但这里是我如何为一个站点设置SSL的(将下面的指令放在httpd.conf文件中,或者放在从该文件引用的文件中,例如放在sites-enabled目录中,如果在Apache安装中使用的话)。有关如何创建和使用自签名证书,请参阅下面的第一个文档链接。

NameVirtualHost *:443
<VirtualHost *:443>
    SSLEngine On
    SSLCertificateFile /etc/apache2/ssl/certificatefile.crt
    SSLCertificateKeyFile /etc/apache2/ssl/certificatekeyfile.crt

    WSGIScriptAlias / /path/to/file.wsgi
</VirtualHost>

文档链接:

相关问题 更多 >