私はdjango Webアプリケーションを持っています。そこでは、httpでアクセスできるURLもあれば、http-secureだけでなければならないURLもあります。私は、同じWebアプリケーションが両方でアクセスできるように、私のApacheのconfファイルにvirtualHost/mod_wsgiの設定を設定する必要があります。私はこれらの2つのポストdjangoとmod_wsgiを持つSSLベースの仮想ホスト
と私はトリックを行うべきだと思う以下の構成を有するが続きます。見つからないエラー - HTTPS上でなければならないものは、404を取得している間
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>
ただし、HTTPを介してアクセスしなければならないURLは、問題なくアクセスされています。 私はビューがhttp経由でアクセスされているのを見て、httpをhttpsで置き換えたurlにリダイレクトするデコレータを持っています。したがって、リダイレクトが起こっている(つまり、ビューが呼び出されたことを意味する)ので、URLマッピングは正しいですが、httpsを超えると404エラーが発生します。
webserverドキュメントルート/var/www/html/
にサードパーティのphpアプリケーションがあり、httpsで正常に動作します。どういうわけか、そのアプリケーションはhttpやhttpsでの問題に直面していません。
私は、次の
- を試してみましたが、両方の仮想ホストで同じ
WSGIProcessGroup
名前のデーモンモードのアプローチを試みたが、それはどちらかうまくいきませんでした。 - Listen 443コマンドを追加しようとしましたが、Apacheが既にバインドされているエラーを報告しました。
は編集:
により、すべてのコメントに、私はもう少し設定を探求し、*を定義して、実行時に引き込まなったサブconfファイルがあったことが判明:仮想443 host(そしてwsgiscriptディレクティブを持っていませんでした)。だからListen 443
がエラーを投げていたのです。そしてそれはhttps上のURLの404についても説明しています(仮想ホストの処理*:443はそのURLを解決できませんでした)。今私はそれを修正し、すべてうまく動作しています。私の元の質問の2スタックオーバーフローポストで提案されたアプローチは完璧で正しく動作します。
サーバーログにHTTPS経由でのリクエストが表示されていますか?あなたはDjangoの404またはApacheからのエラーを受け取りますか?どのソフトウェアがポート443を使用していますか( 'netstat'で確認できます) – ilvar
アクセスしようとしているリダイレクトされたURLは、Apacheのアクセスログによってどのように表示されますか?サブURLにマウントしているので、リダイレクトを構成する正しい方法を使用しないと、マウントポイントを基準にしてリダイレクトされていない可能性があります。だから、Apacheのアクセスログからエントリを投稿して、どのURLが要求されているかを確認し、HTTP応答コードがアクセスログにどのようなものであるかを確認することができます。 –