django SSL apache 配置

标签 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/

当我不将管理媒体目录/usr/local/www/apache22/media 重写为 https 时。这个目录 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

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

有人知道吗?

最佳答案

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

我忘记指定 DocumentRoot 指令,所以它在主 httpd.conf 中指定。

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

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

关于django SSL apache 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4115590/

相关文章:

apache - 了解重定向和重写.htaccess之间的区别

apache - Apache HTTP 服务器上的 SSL

django - geodjango中组合(联合)多边形的问题

android - 需要在代码 list 中声明的​​权限

php - 如何在php中免费获得apache child 的数量

ssl - 在非阻塞套接字上,使用 openssl 0.9.8m 及更高版本实现重新协商

java - 将自定义 SSL 证书添加到信任库但保留 Java 8+ 中的默认 cacerts?

python - Pycharm (Python IDE) 不自动完成 Django 模块

python - 使用django加载CSS返回404

python - Django Queryset 和 filter() 与 get()