[SOLVED] Apache2 - VirtualHost-Vererbung

Alles, was den Apache betrifft, kann hier besprochen werden.

[SOLVED] Apache2 - VirtualHost-Vererbung

Postby kiwi_404 » 01. September 2008 14:07

Hallo Gemeinde :),

ich hab bereits den Apache auf den Kopf zustellt, um zu erfahren, ob ein bestimmtes Feature existiert. Hab bisher leider nichts gefunden. Und zwar:

Ist ein wenig kompliziert, ich versuchs mal strukturiert auf den Punkt zu bringen.

Ich würde gerne VirtualHosts setzen, die ihre Eigenschaften von anderen VirtualHosts übernehmen.

Folgendes Szenario (so wie ichs mir vorstellen würde):

vhost.conf wrote:# stink normaler vh-eintrag
<virtualhost 1.2.3.4>
servername test.dev
serveralias *.test.dev
documentroot /var/www/test/httpdocs
</virtualhost>


# stink normaler vh-eintrag
<virtualhost 1.2.3.4>
servername test2.dev
serveralias *.test2.dev
documentroot /var/www/test2/httpdocs
</virtualhost>


# dieser virtualhost soll unter modem.test.dev und modem.test2.dev erreichbar sein
<virtualhost 1.2.3.4>
servername modem
serveralias modem.*
#hier an dieser stelle stehen die settings für mod_cband, mit dem ich den traffic shapen kann
</virtualhost>


Diese Config dürfte eigentlich funktionieren, aber nun zu dem, was ich will:
Da test.dev und test2.dev einen unterschiedlichen DocumentRoot haben, möchte ich, dass beim Aufruf von "http://modem.test.dev"/"http://modem.test2.dev" sich der DocumentRoot von test.dev/test2.dev vererbt (sinnigerweise auch alle anderen Settings).

Damit würd man sich ersparen, für jeden Vhost einen eigenen "modem"-VirtualHost einzurichten.

Hoffe, ich hab mich verständlich ausgedrückt :)

Wenn da jemand Informationen für mich hat, wäre ich sehr dankbar.

Gruß,
kiwi
Last edited by kiwi_404 on 11. September 2008 10:33, edited 1 time in total.
kiwi_404
 
Posts: 3
Joined: 01. September 2008 13:43

Postby Wiedmann » 01. September 2008 15:15

Da test.dev und test2.dev einen unterschiedlichen DocumentRoot haben, möchte ich, dass beim Aufruf von "http://modem.test.dev"/"http://modem.test2.dev" sich der DocumentRoot von test.dev/test2.dev vererbt (sinnigerweise auch alle anderen Settings).

Was sind "alle anderen Settings? Und wo/wie setzt du diese?

Im Moment scheint ja "modem.test.dev" mehr Settings zu besitzen als "test.dev".
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby kiwi_404 » 01. September 2008 15:52

Wiedmann wrote:
Da test.dev und test2.dev einen unterschiedlichen DocumentRoot haben, möchte ich, dass beim Aufruf von "http://modem.test.dev"/"http://modem.test2.dev" sich der DocumentRoot von test.dev/test2.dev vererbt (sinnigerweise auch alle anderen Settings).

Was sind "alle anderen Settings? Und wo/wie setzt du diese?

Im Moment scheint ja "modem.test.dev" mehr Settings zu besitzen als "test.dev".

Mit "alle anderen Settings" meine ich z.B. "Options +Indexes" oder php-spezifische Tags wie "php_admin_flag safe_mode off".

Eben solche "andere Settings" sollten sich vererben auf den modem-Virtualhost.

Im Moment bezweifel ich eher, dass das geht - mir ist noch nie eine hirarchische Zuweisung der VirtualHosts aufgefallen.

Aber ich frag lieber nochmal nach :)
kiwi_404
 
Posts: 3
Joined: 01. September 2008 13:43

Postby Wiedmann » 01. September 2008 16:49

Im Moment bezweifel ich eher, dass das geht - mir ist noch nie eine hirarchische Zuweisung der VirtualHosts aufgefallen.

Ja und nein...

Was du in der Haupserverkonfig machst, wird von den VHosts übernommen. Wenn du also Einstellungen innerhalb von Directory-Tags (jeweils für die verschiedenen DocumentRoots) in der Hauptkonfig festlegst, ist das für alle (die jeweiligen VHost mit dem DocumentRoot) gültig.


Eine andere Alternative wäre evtl. "mod_macro".
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby kiwi_404 » 08. September 2008 12:32

Wiedmann wrote:
Im Moment bezweifel ich eher, dass das geht - mir ist noch nie eine hirarchische Zuweisung der VirtualHosts aufgefallen.

Ja und nein...

Was du in der Haupserverkonfig machst, wird von den VHosts übernommen. Wenn du also Einstellungen innerhalb von Directory-Tags (jeweils für die verschiedenen DocumentRoots) in der Hauptkonfig festlegst, ist das für alle (die jeweiligen VHost mit dem DocumentRoot) gültig.


Eine andere Alternative wäre evtl. "mod_macro".


Hey ;P,
es ist nich das, was ich mir vorgestellt hab, aber trotzdem sehr effektiv und nützlich!

Ich habe nun sämtliche Kombinations-Möglichkeiten mit modem/isdn/dsl, mit und ohne ssl und für Front-/ und Backend eingerichtet.

Also im Grunde das, was ich mit der Vererbung bezwecken sollte - mit mod_macro ist das jetzt allerdings noch sehr viel komfortabler =D

thx :D

Ich poste zum Abschluss nochmal die letztendliche daraus entstandene Config:

Code: Select all
<Macro std_dev_vhost $name>
    #############################
    # speedhosts normal
    #############################

    # public
    <VirtualHost 192.168.0.250:80>
   ServerName    modem.$name.dev
   
   CBandSpeed    56Kbps 50 150
      
   DocumentRoot   /var/www/$name/httpdocs/
   
   ErrorLog    /var/log/apache2/$name_modem_error.log
   CustomLog    /var/log/apache2/$name_modem_access.log combined
    </VirtualHost>
    <VirtualHost 192.168.0.250:80>
   ServerName    isdn.$name.dev
   
   CBandSpeed    128Kbps 50 150

   DocumentRoot   /var/www/$name/httpdocs/
   
   ErrorLog    /var/log/apache2/$name_isdn_error.log
   CustomLog    /var/log/apache2/$name_isdn_access.log combined
    </VirtualHost>
    <VirtualHost 192.168.0.250:80>
   ServerName    dsl.$name.dev
   
   CBandSpeed    768Kbps 50 150

   DocumentRoot   /var/www/$name/httpdocs/
   
   ErrorLog    /var/log/apache2/$name_dsl_error.log
   CustomLog    /var/log/apache2/$name_dsl_access.log combined
    </VirtualHost>

    # admin
    <VirtualHost 192.168.0.250:80>
   ServerName    modem.admin.$name.dev
   
   CBandSpeed    56Kbps 50 150
      
   DocumentRoot   /var/www/$name-admin/httpdocs/
   
   ErrorLog    /var/log/apache2/$name-admin_modem_error.log
   CustomLog    /var/log/apache2/$name-admin_modem_access.log combined
    </VirtualHost>
    <VirtualHost 192.168.0.250:80>
   ServerName    isdn.admin.$name.dev
   
   CBandSpeed    128Kbps 50 150

   DocumentRoot   /var/www/$name-admin/httpdocs/
   
   ErrorLog    /var/log/apache2/$name-admin_isdn_error.log
   CustomLog    /var/log/apache2/$name-admin_isdn_access.log combined
    </VirtualHost>
    <VirtualHost 192.168.0.250:80>
   ServerName    dsl.admin.$name.dev
   
   CBandSpeed    768Kbps 50 150

   DocumentRoot   /var/www/$name-admin/httpdocs/
   
   ErrorLog    /var/log/apache2/$name-admin_dsl_error.log
   CustomLog    /var/log/apache2/$name-admin_dsl_access.log combined
    </VirtualHost>

    #############################
    # speedhosts ssl
    #############################

    # public
    <VirtualHost 192.168.0.250:443>
   ServerName    modem.$name.dev
   
   CBandSpeed    56Kbps 50 150
      
   DocumentRoot   /var/www/$name/httpdocs/

        SSLEngine on
        SSLCertificateKeyFile /etc/apache2/ssl/server.cert.key
        SSLCertificateFile /etc/apache2/ssl/server.cert.crt
   
   ErrorLog    /var/log/apache2/$name_ssl_modem_error.log
   CustomLog    /var/log/apache2/$name_ssl_modem_access.log combined
    </VirtualHost>
    <VirtualHost 192.168.0.250:443>
   ServerName    isdn.$name.dev
   
   CBandSpeed    128Kbps 50 150

   DocumentRoot   /var/www/$name/httpdocs/

        SSLEngine on
        SSLCertificateKeyFile /etc/apache2/ssl/server.cert.key
        SSLCertificateFile /etc/apache2/ssl/server.cert.crt
   
   ErrorLog    /var/log/apache2/$name_ssl_isdn_error.log
   CustomLog    /var/log/apache2/$name_ssl_isdn_access.log combined
    </VirtualHost>
    <VirtualHost 192.168.0.250:443>
   ServerName    dsl.$name.dev
   
   CBandSpeed    768Kbps 50 150

   DocumentRoot   /var/www/$name/httpdocs/

        SSLEngine on
        SSLCertificateKeyFile /etc/apache2/ssl/server.cert.key
        SSLCertificateFile /etc/apache2/ssl/server.cert.crt
   
   ErrorLog    /var/log/apache2/$name_ssl_dsl_error.log
   CustomLog    /var/log/apache2/$name_ssl_dsl_access.log combined
    </VirtualHost>

    # admin
    <VirtualHost 192.168.0.250:443>
   ServerName    modem.admin.$name.dev
   
   CBandSpeed    56Kbps 50 150
      
   DocumentRoot   /var/www/$name-admin/httpdocs/

        SSLEngine on
        SSLCertificateKeyFile /etc/apache2/ssl/server.cert.key
        SSLCertificateFile /etc/apache2/ssl/server.cert.crt
   
   ErrorLog    /var/log/apache2/$name-admin_ssl_modem_error.log
   CustomLog    /var/log/apache2/$name-admin_ssl_modem_access.log combined
    </VirtualHost>
    <VirtualHost 192.168.0.250:443>
   ServerName    isdn.admin.$name.dev
   
   CBandSpeed    128Kbps 50 150

   DocumentRoot   /var/www/$name-admin/httpdocs/

        SSLEngine on
        SSLCertificateKeyFile /etc/apache2/ssl/server.cert.key
        SSLCertificateFile /etc/apache2/ssl/server.cert.crt
   
   ErrorLog    /var/log/apache2/$name-admin_ssl_isdn_error.log
   CustomLog    /var/log/apache2/$name-admin_ssl_isdn_access.log combined
    </VirtualHost>
    <VirtualHost 192.168.0.250:443>
   ServerName    dsl.admin.$name.dev
   
   CBandSpeed    768Kbps 50 150

   DocumentRoot   /var/www/$name-admin/httpdocs/

        SSLEngine on
        SSLCertificateKeyFile /etc/apache2/ssl/server.cert.key
        SSLCertificateFile /etc/apache2/ssl/server.cert.crt
   
   ErrorLog    /var/log/apache2/$name-admin_ssl_dsl_error.log
   CustomLog    /var/log/apache2/$name-admin_ssl_dsl_access.log combined
    </VirtualHost>

    #############################
    # normal hosts
    #############################
    <VirtualHost 192.168.0.250:80>
   ServerName    admin.$name.dev
   ServerAlias   *.admin.$name.dev
   
   DocumentRoot   /var/www/$name-admin/httpdocs/
   
   ErrorLog   /var/log/apache2/$name-admin_error.log
   CustomLog   /var/log/apache2/$name-admin_access.log   combined
    </VirtualHost>
    <VirtualHost 192.168.0.250:80>
   ServerName    $name.dev
   ServerAlias    *.$name.dev
   
   DocumentRoot   /var/www/$name/httpdocs/
   
   ErrorLog    /var/log/apache2/$name_error.log
   CustomLog    /var/log/apache2/$name_access.log combined
    </VirtualHost>


    #############################
    # SSL-Hosts
    #############################
    <VirtualHost 192.168.0.250:443>
   ServerName    admin.$name.dev
   ServerAlias    *.admin.$name.dev
   
   DocumentRoot   /var/www/$name-admin/httpdocs/

        SSLEngine on
        SSLCertificateKeyFile /etc/apache2/ssl/server.cert.key
        SSLCertificateFile /etc/apache2/ssl/server.cert.crt
   
   ErrorLog    /var/log/apache2/$name-admin_ssl_error.log
   CustomLog    /var/log/apache2/$name-admin_ssl_access.log combined
    </VirtualHost>
    <VirtualHost 192.168.0.250:443>
   ServerName    $name.dev
   ServerAlias    *.$name.dev
   
   DocumentRoot   /var/www/$name/httpdocs/

        SSLEngine on
        SSLCertificateKeyFile /etc/apache2/ssl/server.cert.key
        SSLCertificateFile /etc/apache2/ssl/server.cert.crt
   
   ErrorLog    /var/log/apache2/$name_ssl_error.log
   CustomLog    /var/log/apache2/$name_ssl_access.log combined
    </VirtualHost>
</Macro>


Um dieses "Template" nun zu verwenden, reicht eine Zeile in der apache.conf aus:
Code: Select all
  Use std_dev_vhost projektname


Das ganze ist nun eine seeeehr individuelle Config, direkt auf uns zugeschnitten ;) aber vllt. kann ja später noch jemand damit was anfangen.

Greetz,
kiwi

ps: hmpf.. bevor jemand fragt: nein, das conf-file ist eigentlich eingerückt o.O sieht hier nur relativ merkwürdig aus ^^
kiwi_404
 
Posts: 3
Joined: 01. September 2008 13:43


Return to Apache

Who is online

Users browsing this forum: No registered users and 2 guests