2016-10-21 11 views
1

で私の仮想ホストを破る私はすべての/etc/httpd/conf.dでバーチャルホストファイルを自動的に管理さ約20ドメインとCentOSの7サーバーをしています。Djangoのサイトを追加すると、CentOSの7

私はDjangoを学習しようとしており、それを使用して単一のドメインを設定したいので、特定の仮想ホストを.confファイルに追加しました。

その結果、Djangoドメインは正常に動作しますが、他のすべてのサイトは壊れています(Djangoを使用しようとするとエラーが発生します)。

Djangoのドメインが2つのフォルダがあります:Pythonのファイルのための静的ファイルのdjangodomain.comdjangodomain.appを。

単一のDjangoドメインを既存の多数ドメイン仮想ホスト設定に統合するにはどうすればよいですか?

既存vhosts.conf:

<VirtualHost *:80> 
    serveradmin [email protected] 
    serveradmin [email protected] 

    usecanonicalname off 

    # www.site.com » site.com 
    rewriteengine on 
    rewritecond %{HTTP_HOST} ^www\.(.*)$ [nc] 
    rewriterule ^(.*)$   http://%1 [r=301,l] 

    # file locations 
    virtualdocumentroot "/home/username/%0" 

    <directory "/home/username/*"> 
     allowoverride all 
     require all granted 
     options indexes followsymlinks 
     options +execcgi 
     options +includes 
    </directory> 
</VirtualHost> 

私はすべてが、Djangoのサイトを破ったことを追加何:ApacheはHTTPリクエストを受け取ると

<VirtualHost djangodomain.com:80> 
    ServerName djangodomain.com 
    ServerAlias www.djangodomain.com 
    ServerAdmin [email protected] 

    DocumentRoot /home/username/djangodomain.com 

    WSGIScriptAlias//home/username/djangodomain.app/django.wsgi 

    <Directory /home/username/djangodomain.app> 
     Order allow,deny 
     Allow from all 
    </Directory> 

    Alias /robots.txt /home/username/djangodomain.com/robots.txt 
    Alias /favicon.ico /home/username/djangodomain.com/favicon.ico 
    Alias /images /home/username/djangodomain.com/images 
    Alias /static /home/username/djangodomain.com/static 

    ErrorLog /home/username/djangodomain.logs/error.log 
    CustomLog /home/username/djangodomain.logs/access.log combined 
</VirtualHost> 

unix.stackexchange.com

+0

vhosts.confファイルで、djangoの部分を一番下に置くように見えます。 –

+0

私はそれを試みましたが、何も変わっていませんでした。また、動的仮想ホストの後にロードされた別のファイルに入れてみました。 –

+0

virtualhostディレクティブに名前を使用しないでください。 –

答えて

0

にクロスポスト、それはどの仮想ホストがこの要求を処理することになっているのかを知る必要があります。さて、それは動作する方法です。 Apacheは、クライアント要求が入ったIPアドレス(クライアントではなくサーバーIP)を取得し、仮想ホスト定義のリストを参照して、そのIP用に定義された仮想ホストを見つけます。複数ある場合は、Hostヘッダーを調べ、特定のServerNameまたはServerAliasディレクティブに一致させようとします。それでも見つからない場合は、デフォルトの仮想ホストが検索されます。

2つの仮想ホスト定義があります。ポート80のデフォルト仮想ホストの場合は1つ<VirtualHost *:80>。 * for IPを持つため、デフォルトです。もう1つはIPアドレス<VirtualHost djangodomain.com:80>に固有です。それが使用するIPは、djangodomain.comが解決するものです。

したがって、そのIPに来るリクエストは、IPに固有の設定によって処理されてから、デフォルトにドロップされる可能性があります。

この問題を解決するには、django仮想ホストディレクティブを他の仮想ホストと同じ<VirtualHost *:80>に置き換える必要があります。これにより、それらのすべてを同じ解析の優先順位に置く必要があり、残りの部分を把握するためにHostヘッダーを使用するだけです。

20人以上の仮想ホストを持つWebサーバーを実行している場合、実際にはどのように動作するかを理解する必要があります。あなたは時間があるときにHTTPとWebホスティングで読んでください。

+0

を使用して、動的ホストの後にDjangoホストを指定して配置するようにしました。 –

関連する問題