Intranet und Web in einem Überordner /srv/www/htdocs

Yehudi

Guru
Ich kann in meinem Netzwerk über http://192.168.3.1/ auf mehrere Unterebenen zugreiefen z.B: http://192.168.3.1/Joomla/ oder http://192.168.3.1/typo3/
Nun will ich aber, dass nur Joomla von außen verfügbar ist, und ich von intern immer ganz easy wie bisher auf meinen vielen Unterordner zugreife.
Ist das so umsetzbar?
Oder könnte da virtuellhost rumzicken?
Wie richte ich mit Suse 10.0 das am besten ein, dass ich Intranet vom Internet trenne.
 

nbkr

Guru
Die Unterordner kannst Du mit .htaccess und der Anweisung Order Allow,Deny schützen, wenn Du das meinst.
 

Schroech

Member
nbkr schrieb:
Die Unterordner kannst Du mit .htaccess und der Anweisung Order Allow,Deny schützen, wenn Du das meinst.

.htaccess Dateien gehören zu den 7 Apache Todsünden :))), wenn man root-Rechte auf dem entsprechenden Server hat. .htaccess Dateien bitte nur benutzen, wenn Benutzer ohne root-Rechte Apache konfigurieren können sollen (z.B. bei Webhostern).

Ansonsten kann man den Zugriff ganz normal in der Hauptkonfiguration in einem <Directory>-Kontext vornehmen.

Die Apache Performance leidet bei der Verwendung von .htaccess Dateien.
 

Schroech

Member
Ich zitier mich mal selbst. ;-)

Schroech schrieb:
.htaccess Dateien gehören zu den 7 Apache Todsünden :))), wenn man root-Rechte auf dem entsprechenden Server hat. .htaccess Dateien bitte nur benutzen, wenn Benutzer ohne root-Rechte Apache konfigurieren können sollen (z.B. bei Webhostern).

Um genauer zu sein, hilf es nicht auf .htaccess Dateien zu verzichten. Man muss die Option AllowOverride None explizit setzen. Dann sucht der Apache auch nicht mehr nach .htaccess Dateien.
 

nbkr

Guru
Stimmt ja, gebe ich Dir recht - das halbe Prozent Performance ist bei einem unterfordertem Heimserver schon wichtig.

Ne mal im Ernst, stimmt schon das der Apache durch die Verwendung von .htaccess ein wenig langsamer wird - aber in dem Fall dürfte das nicht ins Gewicht fallen. PHP inkl. MySQL bremsen den Apache bzw. die Seitenauslieferung weit mehr als das die Verwendung von .htaccess Dateien je könnte.
 

Schroech

Member
nbkr schrieb:
Stimmt ja, gebe ich Dir recht - das halbe Prozent Performance ist bei einem unterfordertem Heimserver schon wichtig.

Je nachdem für welches Verzeichnis .htaccess Dateien erlaubt sind, kann das ein ganz schöner Blocker sein.

nbkr schrieb:
Ne mal im Ernst, stimmt schon das der Apache durch die Verwendung von .htaccess ein wenig langsamer wird - aber in dem Fall dürfte das nicht ins Gewicht fallen. PHP inkl. MySQL bremsen den Apache bzw. die Seitenauslieferung weit mehr als das die Verwendung von .htaccess Dateien je könnte.

Kommt drauf an. In der Regel ist .htaccess der größere Blocker.

Und wie gesagt es ist gerade auf einem Heimserver auch gar nicht notwendig. Zusätzlich macht es die Konfiguration noch unübersichtlicher.

Auch nachzulesen bei apache.org:
http://httpd.apache.org/docs/2.0/misc/perf-tuning.html
(nach AllowOverride suchen)
 

Yehudi

Guru
nbkr schrieb:
Die Unterordner kannst Du mit .htaccess und der Anweisung Order Allow,Deny schützen, wenn Du das meinst.

Das meinte ich eigentlich nicht, ich hatte diesen Link gefunden:

http://www.ag-intra.net/linux-al-virtualhost.html

Eigentlich gut geschrieben, bis auf das Suse wieder einiges umgeräumt hat. Er beschreibt dort zwei Seiten, die von außen erreichbar sind, und eine die nur von innen erreichbar ist. Er hat die Seiten in getrennte Ordner. Ich habe diese verschachtelt.

Der gesammte Ordner soll intern über http://192.168.3.1 erreichbar sein. Bastel ich also einer Seite, und bin dann der Meinung, ich veröffenliche sie über http://www.yehudi.info
dann soll der Ordner Joomla dafür in Frage kommen, stelle ich jetzt irgendwann fest, meine Seite läßt sich über typo3 besser verwalten oder bearbeiten, dann brauche ich nur den Eintrag in der virtualhostdatei für http://www.yehudi.info
wechseln, intern kann will ich mir aber trotzdem noch die Joomlaversion anschauen können, da steckt natürlich noch mehr dahinter, meine bookmarks für de Firefox, und noch einiges anderes liegt dort, was nur intern erreichbar sein soll.
Oder geht das gar nicht so?
bzw. müßte ich den obersten Ordner mit der htaccess vernageln, während im unteren Ordner eine .htaccess liegt, die bei direktem Zugriff also über den virtuellen Host dann freigegeben wird.
 

Schroech

Member
Yehudi schrieb:
Er beschreibt dort zwei Seiten, die von außen erreichbar sind, und eine die nur von innen erreichbar ist. Er hat die Seiten in getrennte Ordner. Ich habe diese verschachtelt.

Hat diese Verschachtelung einen Grund?

Yehudi schrieb:
Der gesammte Ordner soll intern über http://192.168.3.1 erreichbar sein. Bastel ich also einer Seite, und bin dann der Meinung, ich veröffenliche sie über http://www.yehudi.info
dann soll der Ordner Joomla dafür in Frage kommen, stelle ich jetzt irgendwann fest, meine Seite läßt sich über typo3 besser verwalten oder bearbeiten, dann brauche ich nur den Eintrag in der virtualhostdatei für http://www.yehudi.info
wechseln, intern kann will ich mir aber trotzdem noch die Joomlaversion anschauen können, da steckt natürlich noch mehr dahinter, meine bookmarks für de Firefox, und noch einiges anderes liegt dort, was nur intern erreichbar sein soll.
Oder geht das gar nicht so?
bzw. müßte ich den obersten Ordner mit der htaccess vernageln, während im unteren Ordner eine .htaccess liegt, die bei direktem Zugriff also über den virtuellen Host dann freigegeben wird.

So in etwa?

Code:
<VirtualHost *>
    ServerName www.yehudi.info
    DocumentRoot /bla/fasel/extern
    <Directory /bla/fasel/extern>
       Order Allow,Deny
       Allow From All
    </Directory>
</VirtualHost>


<VirtualHost *>
    ServerName www.heimenty.site
    DocumentRoot /bla/fasel
    <Directory /bla/fasel>
       Order Deny,Allow
       Deny From All
       Allow  From 127.0.0.1
       Allow From 192.168.0.0/24
    </Directory>
</VirtualHost>

Und bitte ohne .htaccess :D

Habe ich jetzt nicht getestet und es ich bin nicht mehr so frisch, also bitte erstmal ueberpruefen. :wink:
 

Yehudi

Guru
Ohne .htaccess geht es bei mir gar nicht.
Leider funktioniert jetzt der Apache nicht

Zunächst die Fehlermeldung beim restart des Apaches:
Code:
linux: # rcapache2 restart
Syntax OK
Starting httpd2 (prefork) startproc:  exit status of parent of /usr/sbin/httpd2-prefork: 1 [color=red]failed[/color]

Meine Einstellungen:

default-server.conf
Code:
#
# Global configuration that will be applicable for all virtual hosts, unless
# deleted here, or overriden elswhere.
# 

DocumentRoot "/srv/www/htdocs"

#
# Configure the DocumentRoot
#
<Directory "/srv/www/htdocs/Joomla-mambo">
      Options Indexes Includes FollowSymLinks MultiViews
      AllowOverride Indexes AuthConfig Limit FileInfo
      AllowOverride All
      Order allow,deny
      Allow from all
</Directory>


<Directory "/srv/www/htdocs">
RewriteEngine On
        	# Possible values for the Options directive are "None", "All",
	# or any combination of:
	#Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
	#
	# Note that "MultiViews" must be named *explicitly* --- "Options All"
	# doesn't give it to you.
	#
	# The Options directive is both complicated and important.  Please see
	# http://httpd.apache.org/docs-2.0/mod/core.html#options
	# for more information.
	# Einfuegung für Joomla
	 Options Indexes Includes FollowSymLinks MultiViews
	 AllowOverride Indexes AuthConfig Limit FileInfo
	 AllowOverride All
	 Order allow,deny
         Allow  From 127.0.0.1 
	 Allow from 192.168.3.1/24

        #Options All
        # AllowOverride controls what directives may be placed in .htaccess files.
	# It can be "All", "None", or any combination of the keywords:
	# Options FileInfo AuthConfig Limit
        # AllowOverride FileInfo
        # Controls who can get stuff from this server.
        # Order allow,deny
        # Allow from all
        </Directory>

Meine Erweiterung in der httpd.conf

Code:
<VirtualHost *>
     ServerAdmin meine emailadresse
     DocumentRoot /srv/www/htdocs/Joomla-mambo
     ServerName www.yehudi.info
     ErrorLog /var/log/httpd/www.yehudi.info-error_log
     CustomLog /var/log/httpd/www.yehudi.info-access_log common
</VirtualHost>
		    
<VirtualHost *>
     ServerAdmin meine emailadresse
     DocumentRoot /srv/www/htdocs
     ServerName www.heim.netz
     ErrorLog /var/log/http.intranet.error
     CustomLog /var/log/access_log.intranet common
</VirtualHost>

Alle anderen Einstellungen habe ich nicht verändert.
 

TomcatMJ

Guru
Hi!
Ich finds recht logisch, daß dein Apache nicht will. Woher soll er denn auch wissen welches Verzeichnis für den Virtual Host * nun zuständig ist? Du hast diesen Host 2 mal definiert und Hellsehen kann der Webserver nun trotz heutiger KI-Systemmöglichkeiten immer noch nicht (Spliff hat halt recht, "Computer sind doof" *scnr*)....bennen einfach mal einen der beiden mit * bezeichneten Virtual Hosts konkret dann sollte sich ein großer Teil der Probleme erledigt haben...

Bis denne,
Tom
 

Yehudi

Guru
Was meinst Du mit konkret, die IP hintersetzen?

Wenn ich also die jeweilige IP der Netzwerkkarte statt des Sternchens eintrag, also für Intranet 192.168.3.1 und Internet 192.168.1.1 ändert sich nichts.

Bei dem einen Host ist mir noch aufgefallen, dass die RewriteEngine nicht gesetzt war. Das habe ich nachgeholt.

Ein Ip-Aliasing ist nicht notwendig, da ich eine Intranetseite und eine Internet seite habe, die ja auf verschiedene Adressen laufen, oder sehe ich das falsch.

Bei dem ersten Host habe ich jetzt Allow From 192.168.1.1 gesetzt. (Es ist nicht nötig die Seite zweimal über das Heimnetz zu holen)

Und unter etc/hosts habe ich natürlich auch die Einträge gemacht:
127.0.0.1 localhost
192.168.1.1 local.yehudi.info
192.168.3.1 local.heim.netz
 

TomcatMJ

Guru
Ich meinet damit du sollst
nicht zweimal in deiner Konfiguration haben sondern solltest wenigstens bei einer Direktive statt dem Wildcard den konkreten Namen festlegen.
Apache arbeitet es nämlich sonst folgendermaßen ab:
1.) Request kommt zum http-Server
2.) Der Server guckt ob er die angefragte Adresse auflösen kann., entweder nach ip oder nach Namen.
3.) Der Server findet nicht konkretes und guckt nach Wildcards mit zugehörigen Ports
4.) Konkrete Fremdports außer den Standardports 80 für normales http und 443 für https sind nicht genannt also guckt er nach den Standardports
5.) Für die Standardports sind keine Konkreten auflösbare Namen genannt, also wiede rnur nach Wildcards gucken
6.) Der Server stellt fest das das Wildcard * was sonst für alles unbekannte stehen soll auf 2 verschiedene Serverrootverzeichnisse verweist udn weiss nicht was er tun soll, ergo tut er einfach lieber gar nix als das falsche ->Kein Ergebnis für die anfrage verfügbar da der Server in einem Quasi-Deadlock steckt!

Da für die Unterscheidung jedoch die <VirtualHost> Direktive zuständig ist und diese eben für einen Wert zwei verweise enthält wird es einfach Zeit diesen Konflikt in der Konfiguration zu lösen. Du willst aber vom internen Netz auf beide Startverzeichnisse zugreifen können, daher wäre eine Auflösung über die IP eher ungünstig und die Auflösung über den Namen sinnvoller.
Daher: Ändere einfach den Namen des für dein Intranet zuständigen Virtual Hosts auf den internen, nicht von außen erreichbaren da dort nicht auflösbaren Namen von * auf local.heim.netz.
Das ist besser da sonst der Request erst vom Serverrechner auf das andere Netzwerkdevice umgelenkt würde um dann wieder zurück zum Server zu zeigen(->unnütze Last in deinem lokalen Netzwerk), denn rein technisch wäre es ebenso möglich statt des per /etc/hosts Datei auflösbaren Namen die IP-Adresse dort statt des * reinzuschreiben, was aber wie gesagt dein Netzwerk (und in einem gewissen, wenn auch geringen Maße auch die Serverperformance) unnötig belasten würde.
Den anderen Virtual Host, der ja von außen erreichbar sein soll, kannst du ja auf dem Wildcard lassen aber eben nicht beide(sonst gibts besagten Konflikt der deinen Apache lahmlegt oder vorläufig erschiesst*G*)...

Ich hoffe das ist nun etwas klarer worauf ich damit hinaus wollte.

Bis denne,
Tom

Edit: P.S.: Ums mal ganz konkret zu sagen: Änder deine Konfiguration mal auf folgende Weise ab:
Code:
<VirtualHost *>
     ServerAdmin meine emailadresse
     DocumentRoot /srv/www/htdocs/Joomla-mambo
     ServerName www.yehudi.info
     ErrorLog /var/log/httpd/www.yehudi.info-error_log
     CustomLog /var/log/httpd/www.yehudi.info-access_log common
</VirtualHost>
         
<VirtualHost www.heim.netz>
     ServerAdmin meine emailadresse
     DocumentRoot /srv/www/htdocs
     ServerName www.heim.netz
     ErrorLog /var/log/http.intranet.error
     CustomLog /var/log/access_log.intranet common
</VirtualHost>
 

Yehudi

Guru
Das habe ich so weitesgehend verstanden.

Leider habe ich trotzdem keinen Erfolgmit dem Apache, und er gibt die gleiche Fehlermeldung, wie vorher auch.
 
Oben