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

Petah
quelle

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

muhen
quelle
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>
Sean Lewis
quelle
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>
François Feugeas
quelle
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>
jeffatrackaid
quelle