Apache-Konfiguration mit virtuellen Hosts und SSL in einem lokalen Netzwerk


7

Ich versuche, meine lokale Apache-Konfiguration folgendermaßen einzurichten:

http://localhost/ sollte dienen ~/

http://development.somedomain.co.nz/ sollte dienen ~/sites/development.somedomain.co.nz/

https://development.assldomain.co.nz/ sollte dienen ~/sites/development.assldomain.co.nz/

Ich möchte nur Verbindungen von unserem lokalen Netzwerk (Bereich 192.168.1. *) Und mir selbst (127.0.0.1) zulassen.

Ich habe meine Hosts-Datei eingerichtet mit:

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

Meine Apache-Konfiguration sieht folgendermaßen aus:

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/und gut https://development.assldomain.co.nz/funktionieren.

Das Problem ist, wenn ich anfordere http://development.anunuseddomain.co.nz/oder http://development.assldomain.co.nz/es mit dem gleichen antwortet wiehttp://development.somedomain.co.nz/

Ich möchte, dass alle Anforderungen abgelehnt werden, die nicht mit dem Namen eines virtuellen Hostservers übereinstimmen, sowie alle Anforderungen an einen https-Host, die mit http angefordert werden

PS Ich verwende XAMPP unter Mac OS X 10.5.8

Antworten:


2

Wenn Apache vhost nicht mactch kann, wird der Standard geöffnet. Es gibt immer eine Standardeinstellung. Wenn diese nicht explizit definiert ist, handelt es sich um die erste vhost-Definition in Ihrer Konfigurationsdatei.

Sie können httpd -S verwenden, um zu überprüfen, was Ihre Standard-vhosts sind

Und Sie können Standard definieren und den Zugriff darauf verbieten, wenn Sie möchten, wie defraagh gezeigt


hmm kann unter MacOS anders sein als unter Linux. Versuchen Sie dies: httpd -D DUMP_VHOSTS
moo

7

Das benannte virtuelle Hosting wird für SSL-basierte virtuelle Hosts nicht unterstützt.

Das Problem ergibt sich aus der Tatsache, dass der Servername auch in der SSL-Anforderung verschlüsselt ist. Wenn der Server eine Anforderung für "einen Domänennamen" oder was auch immer empfängt, wird standardmäßig ein benannter VHost verwendet, der nicht auf 443 ist.

Lösung:

  • Platzieren Sie Ihre Lisener außerhalb Ihrer VHost-Definitionen
  • Ändern Sie: 443 in eine IP-Adresse. Der Server führt automatisch Reverse-DNS-Suchvorgänge durch.

Korrigiert:

# 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>

1

Fügen Sie am Ende Ihrer Datei einen Standard-VirtualHost hinzu, um Anforderungen an Hosts abzufangen, die Sie nicht explizit angegeben haben:

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

Ich habe versucht, das <VirtualHost localhost:80>zu ändern , <VirtualHost __default__:80>aber es wird immer noch überschrieben von<VirtualHost development.somedomain.co.nz:80>
Petah

Es ist " Standard " mit einem Unterstrich links und einem Unterstrich rechts.
François Feugeas

Woops, ok, ich habe es versucht _default_und es ist immer noch dasselbe
Petah

0

In Ihrer virutalen Host-Direktive:

<VirtualHost localhost:80>

Versuchen Sie stattdessen, die IP zu verwenden.

<VirtualHost 127.0.0.1:80>
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.