PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : apache vhosts: userdir nur für einige vhosts geht nicht?



mamue
25.08.06, 10:23
Hallo,
ich habe mehrere vhosts eingerichtet, zum Beispiel "mail" und "inet". Beide Webserver haben eine eigene (virtuelle) IP, "inet" ist immer erreichbar, "mail" nur, wenn die Firewallregeln entsprechend gesetzt sind. Ich möchte nicht, dass die user-dir auf dem Webserver "inet" erreichbar sind, sondern nur auf "mail". Ich habe beide vhosts.confs soweit als möglich gestrippt:


<VirtualHost mail>
DocumentRoot /srv/www/mail

ErrorLog /var/log/apache2/mail.log
CustomLog /var/log/apache2/mail.log combined
</VirtualHost>

<Directory "/srv/www/mail">
Order allow,deny
Allow from all
</Directory>

#<IfModule mod_userdir.c>
#Include /etc/apache2/mod_userdir.conf
#</IfModule>

Wenn Die letzten drei Zeilen nicht auskommentiert sind, sind die "public_html" der user erreichbar (w3m http://mail/~joe), aber dann sind sie auch über den zweiten vhost erreichbar:


<VirtualHost 172.18.0.2>
DocumentRoot /srv/www/inet

ErrorLog /var/log/apache2/inet.log
CustomLog /var/log/apache2/inet.log combined
</VirtualHost>

<Directory "/srv/www/inet">
Options Indexes FollowSymLinks

AllowOverride All

Order allow,deny
Allow from all
</Directory>

#<IfModule mod_userdir.c>
#</IfModule>


Wie kann ich es erreichen, dass die userdir nur über den host mail, aber nicht inet erreichbar sind?
Ich habe versucht, in inet.conf UserDir disabled und in mail.conf entsprechend UserDir enabled joe zu setzen, aber auch das führt nicht zum Erfolg. Entweder es funktionieren beide Hosts oder keiner von beiden.

Danke,
mamue

mamue
26.08.06, 10:51
Geht das wirklich nicht, oder ist das so einfach, dass sich eine Antwort nicht lohnt? Hat das vielleicht irgendwer am Laufen und kann bestätigen, dass das geht?

Danke,
mamue

mamue
27.08.06, 14:54
OK, das macht also keiner und es geht auch nicht. So sieht es ja wohl scheinbar aus. Oder hat schon mal jemand von jemandem gehört, dass das irgend jemand so etwas macht?

Danke,
mamue

marce
28.08.06, 07:48
der dafür interessante Teil solte in der

#Include /etc/apache2/mod_userdir.conf stehen - und wenn der Part dann in dem entsprechenden Virt.Host enthalten ist und im anderen nicht - Du solltest die Konfig aber schon in den jeweiligen Container packen...

mamue
28.08.06, 17:14
der dafür interessante Teil solte in der stehen - und wenn der Part dann in dem entsprechenden Virt.Host enthalten ist und im anderen nicht - Du solltest die Konfig aber schon in den jeweiligen Container packen...

Wahrscheinlich habe ich Dich falsch verstanden, denn es geht nicht:


#inet.conf, jetzt komplett
<VirtualHost 172.18.0.2>
ServerAdmin webadmin@my-domain.foo
ServerName inet.my-domain.foo

DocumentRoot /srv/www/inet

ErrorLog /var/log/apache2/inet.log
CustomLog /var/log/apache2/inet.log combined

HostnameLookups Off

UseCanonicalName Off
ServerSignature On
</VirtualHost>


<Directory "/srv/www/inet">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>

Mehr steht da nicht drin. Die mail.conf hat als den Teil aus der mod_userdir.conf eingefügt:


<VirtualHost mail>
ServerAdmin webadmin@my-domain.foo
ServerName mail.my-domain.foo

DocumentRoot /srv/www/mail
ErrorLog /var/log/apache2/mail.log
CustomLog /var/log/apache2/mail.log combined
HostnameLookups Off
UseCanonicalName Off
ServerSignature On
</VirtualHost>

<Directory "/srv/www/mail">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>

<IfModule mod_userdir.c>
<Directory /home/*/*/public_html>
AllowOverride FileInfo AuthConfig Limit Indexes
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS PROPFIND>
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST OPTIONS PROPFIND>
Order deny,allow
Deny from all
</LimitExcept>
</Directory>
</IfModule>

Die mod_userdir.conf in /etc/apache2 habe ich umbenannt (nicht kopiert) in mod_userdir.conf.orig.
Ich bekomme unter allen Hostnamen (inet und mail und auch allen anderen) die Webseiten der user.

Was mache ich da bloß falsch? Ach ja, mail hat 172.18.0.3, inet 172.18.0.2.

Danke,
mamue

P.S.: Ich habe jetzt sicherheitshalber alle userdir Einträge aus allen .conf ausser den beiden genannten rausgenommen und natürlich auch den APache jedesmal neu gestartet.
P.P.S.: Ich habe versuchshalber den Abschnitt mit der mod_userdir.conf auch in inet eingefügt, nur habe ich
Allow from none
Deny from all
gesetzt. Ich bekomme ~joe zu sehen (nach Neustart). Ich verstehe das nicht <ratlos>

marce
28.08.06, 18:13
Du must den entsprechenden Directory-Abschnitt in den Container des gewünschten Virt. Hosts einfügen. Und nur da. Dann sollte es funktionieren.

mamue
29.08.06, 09:41
Das habe ich versucht - glaube ich. Was meinst Du mit "Container"? Die main/inet.conf? Da steht es ja drin, versuchsweise auch ohne "IfModule".
Wenn ich die userdir-Anweisung alleine in <VirtualHost mail> eintrage, ändert das auch nichts. Ich dachte zwischenzeitlich schon, der squid auf dem Gateway wäre beteiligt - ist er aber nicht. Ich habe die Namen in der "<VirtualHost ..>" durch die IP ersetzt bei allen vhosts, aber auch das ändert nichts. Ich bin ratlos.

mamue

mamue
29.08.06, 10:08
Mir wurde jetzt erklärt, wie es geht. Wahrscheinlich war es auch das, was marce meinte:


<VirtualHost 172.18.0.2>
ServerAdmin webadmin@my-domain.foo
ServerName inet.my-domain.foo

DocumentRoot /srv/www/inet
<IfModule mod_userdir.c>
<Directory /home/*/*/public_html>
AllowOverride FileInfo AuthConfig Limit Indexes
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS PROPFIND>
Order allow,deny
Allow from all
</Limit>

<LimitExcept GET POST OPTIONS PROPFIND>
Order deny,allow
Deny from all
</LimitExcept>

</Directory>
</IfModule>
</VirtualHost>

Alternativ oder auch zusätzlich kann man in den auch UserDir disabled reinsetzten:


<VirtualHost 172.18.0.2>
ServerAdmin webadmin@my-domain.foo
ServerName inet.my-domain.foo

DocumentRoot /srv/www/inet
UserDir disabled
</VirtualHost>

Naja, der Webserver ist halt mehr Beiwerk.

Danke,
mamue

marce
29.08.06, 10:11
genau so meinte ich...

Herausgefunden durch probieren oder intensives Doku-lesen?