web-dev-qa-db-ja.com

ローカルネットワーク上の仮想ホストとSSLを使用したApache構成

ローカルのApache構成を次のようにセットアップしようとしています。

http://localhost/~/を提供する必要があります

http://development.somedomain.co.nz/~/sites/development.somedomain.co.nz/を提供する必要があります

https://development.assldomain.co.nz/~/sites/development.assldomain.co.nz/を提供する必要があります

ローカルネットワーク(192.168.1。*の範囲)と自分自身(127.0.0.1)からの接続のみを許可したい。

私はhostsファイルを次のように設定しました:

127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost 
fe80::1%lo0 localhost
127.0.0.1 development.somedomain.co.nz
127.0.0.1 development.assldomain.co.nz
127.0.0.1 development.anunuseddomain.co.nz

私のApache構成は次のようになります。

Listen 80

NameVirtualHost *:80

<VirtualHost development.somedomain.co.nz:80>
    ServerName development.somedomain.co.nz
    DocumentRoot "~/sites/development.somedomain.co.nz"
    DirectoryIndex index.php
    <Directory ~/sites/development.somedomain.co.nz>
        Options Indexes FollowSymLinks ExecCGI Includes
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

<VirtualHost localhost:80>
    DocumentRoot "~/"
    ServerName localhost
    <Directory "~/">
        Options Indexes FollowSymLinks ExecCGI Includes
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

<IfModule mod_ssl.c>
    Listen *:443
    NameVirtualHost *:443
    AcceptMutex flock
    <VirtualHost development.assldomain.co.nz:443>
        ServerName development.assldomain.co.nz
        DocumentRoot "~/sites/development.assldomain.co.nz"
        DirectoryIndex index.php
        SSLEngine on
        SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
        SSLCertificateFile /Applications/XAMPP/etc/ssl.crt/server.crt
        SSLCertificateKeyFile /Applications/XAMPP/etc/ssl.key/server.key
        BrowserMatch ".*MSIE.*" \
                 nokeepalive ssl-unclean-shutdown \
                 downgrade-1.0 force-response-1.0
        <Directory ~/sites/development.assldomain.co.nz>
            SSLRequireSSL
            Options Indexes FollowSymLinks ExecCGI Includes
            AllowOverride All
            Order allow,deny
            Allow from all
        </Directory>
    </VirtualHost>

</IfModule>

http://development.somedomain.co.nz/http://localhost/およびhttps://development.assldomain.co.nz/は正常に機能します。

問題は、http://development.anunuseddomain.co.nz/またはhttp://development.assldomain.co.nz/を要求すると、http://development.somedomain.co.nz/と同じように応答することです。

仮想ホストサーバー名と一致しないすべてのリクエストと、httpでリクエストされたhttpsホストへのすべてのリクエストを拒否したい

PS Mac OS X10.5.8でXAMPPを実行しています

7
Petah

Apacheがmactchvhostをカントできない場合、デフォルトのものを開きます。デフォルトは常にあります。明示的に定義されていない場合は、構成ファイルの最初の仮想ホスト定義です。

Httpd -Sを使用して、デフォルトのvhostを確認できます。

また、デフォルトを定義して、必要に応じてアクセスを禁止することができます。

2
moo

名前付き仮想ホスティングは、SSLベースの仮想ホストではサポートされていません。

この問題は、ServerNameもSSL要求で暗号化されているという事実に起因しています。したがって、サーバーが「somedomainname」などの要求を受信すると、デフォルトで、443でis n'tという名前付きVHostになります。

解決:

  • ライザーをVHost定義の外に置く
  • :443をIPアドレスに変更します。サーバーはDNSの逆引き参照を自動的に実行します。

修正済み:

# Listen :80
Listen *:80
# Listen on IP Address for :443
Listen 127.0.0.1:443

<VirtualHost development.somedomain.co.nz:80>
   ServerName development.somedomain.co.nz
   DocumentRoot "~/sites/development.somedomain.co.nz"

   DirectoryIndex index.php

   # Stay consistent with your syntax definitions. This and the 443 Vhost Directory
   # were not Quoted. That's not to say it makes a difference guaranteed,
   # but it's always a good habit. 
   <Directory "~/sites/development.somedomain.co.nz">
       Options Indexes FollowSymLinks ExecCGI Includes
       AllowOverride All
       Order allow,deny
       Allow from all
   </Directory>
</VirtualHost>

<VirtualHost localhost:80>
   ServerName localhost
   DocumentRoot "~/"

   <Directory "~/">
      Options Indexes FollowSymLinks ExecCGI Includes
      AllowOverride All
      Order allow,deny
      Allow from all
   </Directory>
</VirtualHost>

<IfModule mod_ssl.c>

   # Does this need to exist outside of the VHost Definition ?? 
   AcceptMutex flock

   <VirtualHost 127.0.0.1:443>
       ServerName development.assldomain.co.nz
       DocumentRoot "~/sites/development.assldomain.co.nz"
       DirectoryIndex index.php
       SSLEngine on
       SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
       SSLCertificateFile /Applications/XAMPP/etc/ssl.crt/server.crt
       SSLCertificateKeyFile /Applications/XAMPP/etc/ssl.key/server.key
       BrowserMatch ".*MSIE.*" \
             nokeepalive ssl-unclean-shutdown \
             downgrade-1.0 force-response-1.0

       <Directory "~/sites/development.assldomain.co.nz">
           SSLRequireSSL
           Options Indexes FollowSymLinks ExecCGI Includes
           AllowOverride All
           Order allow,deny
           Allow from all
       </Directory>
   </VirtualHost>

</IfModule>
7
Sean Lewis

ファイルの最後にデフォルトのVirtualHostを追加して、明示的に指定しなかったホストに向けられたリクエストをキャッチします。

 <VirtualHost _default_:*>
    DocumentRoot /~/void
    ...
 </VirtualHost>
1

あなたの仮想のホストディレクティブで:

<VirtualHost localhost:80>

代わりにIPを使用してみてください。

<VirtualHost 127.0.0.1:80>
0
jeffatrackaid