2012-04-19 11 views
4

私は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スタックオーバーフローポストで提案されたアプローチは完璧で正しく動作します。

+0

サーバーログにHTTPS経由でのリクエストが表示されていますか?あなたはDjangoの404またはApacheからのエラーを受け取りますか?どのソフトウェアがポート443を使用していますか( 'netstat'で確認できます) – ilvar

+0

アクセスしようとしているリダイレクトされたURLは、Apacheのアクセスログによってどのように表示されますか?サブURLにマウントしているので、リダイレクトを構成する正しい方法を使用しないと、マウントポイントを基準にしてリダイレクトされていない可能性があります。だから、Apacheのアクセスログからエントリを投稿して、どのURLが要求されているかを確認し、HTTP応答コードがアクセスログにどのようなものであるかを確認することができます。 –

答えて

4

apache2.confに「Listen 80」と「Listen 443」の両方が記載されていますか? Thisは助けになるかもしれません。

関連する問題