django SSL apache配置

时间:2010-11-06 22:49:27

标签: django apache ssl

我有一个django应用程序,我想将SSL应用于管理页面。由于管理页面是唯一需要SSL的页面,我想使用apache配置文件而不使用SSLMiddleware来执行此操作。我的(部分)apache配置文件如下所示:

<VirtualHost *:80>
    .
    .
    DocumentRoot /home/www/sites_django/wmssite
    .
    <Directory "/home/www/sites_django/wmssite">
        .
    </Directory>

    <Location "/admin">
        RewriteEngine On
        RewriteRule ^/(.*) https://www.whitemoorstudio.pvm/admin [L,R=301]
    </Location>
</VirtualHost>

<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile "/usr/local/etc/apache22/www_whitemoorstudio_pvm.crt"
    SSLCertificateKeyFile "/usr/local/etc/apache22/www_whitemoorstudio_pvm.key"
    .
    .
</VirtualHost>

TLD .pvm是我用于在内部网络上进行测试的本地TLD。

我已经设置了一个自我证明的证书,它很有用....奇怪的是,由于某种原因,当重写为https时,它无法在/ media目录中找到媒体文件,没有图像,没有css,没有js。 apache错误日志告诉我它正在查找目录/ usr / local / www / apache22 / data / media:

[Sat Nov 06 20:45:18 2010] [error] [client 192.168.1.134] File does not exist: /usr/local/www/apache22/data/media, referer: https://www.whitemoorstudio.pvm/admin/

当我不重写https管理媒体目录/ usr / local / www / apache22 / media时。此目录媒体是一个逻辑链接:

media -> /usr/local/lib/python2.5/site-packages/django/contrib/admin/media

我不知道为什么没有SSL它正在寻找:

/usr/local/www/apache22/media

并使用SSL:

/usr/local/www/apache22/data/media

这最后一个目录不存在!!!

有人有任何想法吗?

1 个答案:

答案 0 :(得分:0)

问题已经解决了。在VirtualHost *:443容器中添加内容时

我忘记指定DocumentRoot指令,因此它是在主httpd.conf中指定的。

在VirtualHost *:80容器中运行良好,因为在该部分我指定了DocumentRoot。

在httpd.conf中,它被指定为: DocumentRoot“/ usr / local / www / apache22 / data”