django SSL apache配置

问题描述:

我有一个django应用程序,我想将SSL应用到管理页面。由于管理页面是唯一需要SSL的页面,因此我想使用apache配置文件来执行此操作,而不是使用SSLMiddleware。我的(部分)Apache的配置文件是这样的:django SSL 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的错误日志告诉我这是/ apache22 /数据/媒体看在目录/ usr /本地/网络:

[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 /本地/网络/ apache22 /媒体。这个目录的媒体是一个逻辑链接:

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 

最后这个目录没有按不存在!

任何任何想法?

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

我忘记指定DocumentRoot指令,因此它与主httpd.conf中指定的一样。

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

: 的DocumentRoot “在/ usr /本地/网络/ apache22 /数据”

+0

谢谢你的邀请,解决这一点。我会在几天内做同样的事情,这会给我一个很好的起点。 – jlarry 2010-11-07 01:08:19

+0

不客气。我还将重写规则更改为:RewriteRule ^/admin(。*)https://www.whitemoorstudio.pvm/admin [L,R = 301]。另请注意,这些文件位置适用于我的FreeBSD服务器。 – Henri 2010-11-07 23:51:38

+0

请标记您的答案是正确的 – Sheena 2013-05-13 10:07:35