Host virtual basado en SSL con django y mod_wsgi
Tengo una aplicación web de django en la que se permite el acceso a algunas URL a través de http, mientras que otras tienen que estar solo a través de http seguro. Necesito configurar la configuración virtualHost / mod_wsgi en mi archivo conf de apache, para que se pueda acceder a la misma aplicación web en ambos. Seguí estos 2 mensajes
¿Cómo forzar el uso de SSL para alguna URL de mi aplicación Django?Django y SSL cuestionany tengo la siguiente configuración que creo que debería hacer el truco.
<code>NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin [email protected] 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 [email protected] 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> </code>
Sin embargo, se accede a las direcciones URL a las que se debe acceder a través de http sin ningún problema, mientras que las que tienen que estar a través de https obtienen un error 404: no se encuentra. Tengo un decorador que ve si se está accediendo a una vista a través de http y luego redirige a una url con http reemplazado por https. Así que la url-mapping es correcta ya que veo que se está produciendo una redirección (lo que significa que se llama a la vista), pero en https, se genera un error 404.
Tengo una aplicación php de terceros en la raíz del documento del servidor web/var/www/html/
que funciona bien sobre https. De alguna manera, esa aplicación no enfrenta ningún problema a través de http o https.
Probé lo siguiente
Intenté el enfoque del modo Daemon con el mismoWSGIProcessGroup
Nombre en ambos hosts virtuales, pero eso tampoco funcionó.Intenté agregar el comando Listen 443 y Apache se quejó de un error de puerto ya enlazado.Editar:
Debido a todos sus comentarios, exploré las configuraciones un poco más y descubrí que había un archivo subconfección que se estaba introduciendo en el tiempo de ejecución que definía el host virtual *: 443 (y no tenía la directiva wsgiscript). Por eso elListen 443
Estaba lanzando un error. Y eso también explica el 404 para la url sobre https (el manejo del host virtual *: 443 no pudo resolver esa url). Ahora lo modifiqué y todo funciona bien. Los enfoques sugeridos en los mensajes de desbordamiento de 2 pilas en mi pregunta original son perfectos y funcionan correctamente.