如何强制我的 Django 应用程序的某些 URL 使用 SSL?

如何强制我的 Django 应用程序的某些 URL 使用 SSL?

我想确保我的网站的某些 URL 可以使用 SSL。我在 SO 上已经看到了很多答案。

https://stackoverflow.com/questions/724968/force-redirect-to-ssl-for-all-pages-apart-from-one

所以我想我会使用mod_rewrite。

我的问题更多是关于如何配置虚拟主机以通过 HTTP 和 HTTPS 顺利运行我的 Django 应用程序。我正在使用 WSGI。

仅在 *:443 和 *:80 上复制配置有问题吗?我该怎么做才能获得最佳配置?

谢谢。

雷米

答案1

您可以在视图上使用装饰器,使它们仅对 ssl 有效。

@secure_required
@login_required
def edit_member(request, slug):
    ...

http://www.redrobotstudios.com/blog/2009/02/18/securing-django-with-ssl/

答案2

复制 *:443 的配置是可以的,下面是我在我的服务器上的操作方法:

<VirtualHost *:80>
        ServerName www.mydomain.tld
        ServerAlias mydomain.tld

        DocumentRoot /path/to/www
        <Directory /path/to/www>
                AllowOverride All
                Order allow,deny
                allow from all
                Options -MultiViews
        </Directory>

</VirtualHost>

<VirtualHost *:443>
        ServerName www.mydomain.tld
        ServerAlias mydomain.tld

        DocumentRoot /path/to/www
        <Directory /path/to/www>
                AllowOverride All
                Order allow,deny
                allow from all
                Options -MultiViews
        </Directory>

        SSLEngine On
        SSLCertificateFile /etc/ssl/private/mydomain.crt

</VirtualHost>

请确保在 *:443 虚拟主机 (SSLEngine) 上激活 SSL,并设置您的证书 (SSLCertificateFile)。

您还需要激活 Apache2 的 ssl 模块,以 root 身份输入:

a2enmod ssl

相关内容