我有一个django Web应用程序,其中允许通过http访问某些URL,而其他URL只能通过http-secure访问.我需要在我的apache conf文件中设置virtualHost/mod_wsgi配置,以便可以通过两者访问同一个Web应用程序.我跟着这2个帖子
并且具有以下配置,我认为应该这样做.
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin me@mail.com
DocumentRoot /var/www/html
ServerName www.mydomain.com
ErrorLog server-logs/error_log
CustomLog server-logs/access_log common
WSGIScriptAlias /test /var/www/my_app_root/apache/django.wsgi
<Directory /var/www/my_app_root>
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
NameVirtualHost *:443
<VirtualHost *:443>
SSLEngine On
SSLCertificateFile /etc/httpd/conf/ssl/mykey.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl/mykey.key
ServerAdmin me@mail.com
DocumentRoot /var/www/html
ServerName www.mydomain.com
ErrorLog server-logs/error_log
CustomLog server-logs/access_log common
WSGIScriptAlias /test /var/www/my_app_root/apache/django.wsgi
<Directory /var/www/my_app_root>
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
但是,必须通过http访问的URL正在被访问而没有任何问题,而那些必须通过https的URL正在获得404 - 未找到错误.我有一个装饰器,可以查看是否通过http访问视图,然后重定向到URL,其中http替换为https.所以url-mapping是正确的,因为我看到重定向发生(这意味着视图被调用)但是通过https,它得到404错误.
我在webserver文档根目录中有第三方php应用程序,/var/www/html/它可以在https上正常工作.不知何故,该应用程序没有遇到任何关于http或https的问题.
我尝试了以下内容
WSGIProcessGroup在两个虚拟主机中使用相同名称的守护进程模式方法,但这也没有用.编辑:
由于你的所有评论,我更多地探讨了配置,发现有一个子conf文件在运行时被拉入,它定义了*:443虚拟主机(并且没有wsgiscript指令).这就是为什么 …