apache2 / IP-abhängige Wartungsarbeiten-Seite einrichten

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

apache2 / IP-abhängige Wartungsarbeiten-Seite einrichten

Postby jack99 » 14. July 2007 08:57

Hallo ich suche nach einer Möglichkeit eine "Wartungsarbeieten-Seite" für den Apache2 einzurichten.

Dabei möchte ich daß während der Wartungsarbeiten global alle vHosts durch eine entsprechende HTML-Seite mit einem Hinweis auf Wartungsarbeiten ersetzt werden. Von bestimmten IP-Adressen soll der Zugriff auf die vHosts jedoch weiterhin möglich sein um die Websiten während der Wartungsarbeiten testen zu können.

Z.B.

Wenn IP = 1.2.3.4 -> include alle VHosts
Wenn IP != 1.2.3.4 -> include nur den vHost mit "Wartungsarbeiten"-Seite

Deshalb dachte ich an eine Art IP-basierte-Umleitung mittels mod_rewrite. Dann würde ich zentral für alle vHosts/Server eine Umleitung zur Wartungsseite einrichten und nur Anfragen von einer bestimmten IP würden die "normalen" Inhalte der vhosts liefern.

Nun eine derartige Umleitung ließe sich z.B. mittels mod_rewrite wie folgt realisieren:

<Directory />
RewriteEngine On
# die IP 88.76.202.104 soll z.B. nicht umgeleitet werden
RewriteCond %{REMOTE_ADDR} !^88.76.202.104
RewriteRule !wartungsarbeiten.html /var/www/wartungsarbeiten.html [L]
</Directory>

Das Problem ist nun, dass ich jetzt immer auf ein Verzeichnis bzw. eine Datei unterhalb des DocumentRoot des jeweiligen vHosts weitergeleitet werde . D.h. :

domain1.de wird umgeleitet nach domain1.de/var..
domain2.de wird umgeleitet nach domain2.de/var..

usw.

deshalb müsste ich im Prinzip für jeden vHost ein eigenes Verzeichnis anlegen. Bis jetzt ist es mir leider nicht gelungen eine Umleitung auf ein gemeinsames Verzeichnis für alle vHost einzurichten.

Vielleicht kennt ja jemand eine Möglichkeit oder vielleicht eine ganz andere, bessere Lösung für mein Problem?

Vielen Dank im Voraus
jack
jack99
 
Posts: 4
Joined: 14. July 2007 08:54

Postby DJ DHG » 14. July 2007 09:21

Moin Moin!

Versuche es mit einem globalem Alias.
Also nicht in die Vhosts eintragen.

mfg DJ DHG
User avatar
DJ DHG
AF Moderator
 
Posts: 2455
Joined: 27. December 2002 13:50
Location: Kiel

Postby jack99 » 14. July 2007 09:40

hallo,

vielen Dank erst mal für die schnelle antwort.

nun beim globalen alias gibt es folgende Probleme:

Alias / /var/www/vhosts/wartung/

1) wenn ich z.B. domain.de/testverzeichnis aufrufe dann führt dies zur folgender Fehlermeldung:

File does not exist: /var/www/vhosts/wartung/tzutzutzu

Ich möchte aber das die wartungsarbeiten-seite bei allen anfragen angezeigt wird.

2.) Von bestimmten IP-Adressen soll der Zugriff auf die vHosts jedoch weiterhin ganz normal möglich sein.

viele Grüße
jack
jack99
 
Posts: 4
Joined: 14. July 2007 08:54

Postby DJ DHG » 14. July 2007 10:53

Anders gesagt.

1. Lege einen neuen Ordner mit deiner Wartungsseite an.
2. Erstelle einen neuen Directory Block für den Ordner
3. Erstelle einen Alias der auf diesen Ordner zeigt.
4. Mit mod_rewrite alle Anfragen auf den Alias umleiten
lassen, die nicht den bestimmten Adressen entsprechen.

mfg DJ DHG
User avatar
DJ DHG
AF Moderator
 
Posts: 2455
Joined: 27. December 2002 13:50
Location: Kiel

Postby DJ DHG » 14. July 2007 10:57

Es reicht, wenn du zu je einem Thema auch nur einen Thread erstellst!

mfg DJ DHG
User avatar
DJ DHG
AF Moderator
 
Posts: 2455
Joined: 27. December 2002 13:50
Location: Kiel

Postby jack99 » 14. July 2007 11:43

Hallo,

ich hoffe ich habe dich richtig verstanden:

1. Lege einen neuen Ordner mit deiner Wartungsseite an.

/var/www/vhosts/www-user/wartung/

2. Erstelle einen neuen Directory Block für den Ordner

<Directory "/var/www/vhosts/www-user/wartung/">
Options FollowSymLinks
AllowOverride all
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^88.76.202.104
RewriteRule !wartungsarbeiten wartungsarbeiten [L]
</Directory>

3. Erstelle einen Alias der auf diesen Ordner zeigt.

Alias /wartungsarbeiten/ /var/www/vhosts/www-user/wartung/

4. Mit mod_rewrite alle Anfragen auf den Alias umleiten

siehe Punkt 2

Ergebnis: es erfolgt keine Umleitung und in mod_rewrite.log wird auch nichts reingeschrieben. Es wird einfach die index-seite der jeweiligen domain/vhosts angezeigt.

wenn ich die folgenden Zeilen aus dem Directory-Block entferne und im globalen Server-Kontext benutze

RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^88.76.202.104
RewriteRule !wartungsarbeiten wartungsarbeiten [L]

dann wird in mod_rewrite.log folgendes reingeschrieben (ALLERDINGS NUR BEIM RELOAD DES SERVERS, nicht beim aufruf der domain?):

(2) init rewrite engine with requested uri /
(3) applying pattern 'wartungsarbeiten' to uri '/'
(4) RewriteCond: input='127.0.0.1' pattern='!^88.76.202.104' => matched
(2) rewrite '/' -> 'wartungsarbeiten'
(2) local path result: wartungsarbeiten


es erfolgt jedoch ebenfalls keine Umleitung.

hier noch mal der Auszug aus der apache2.conf

Code: Select all
RewriteLog "/var/log/apache2/mod_rewrite.log"
RewriteLogLevel 5
Alias /wartungsarbeiten/ /var/www/vhosts/www-user/wartung/

NameVirtualHost xxx.xxx.xxx.xxx:80
DocumentRoot "/var/www"
UseCanonicalName Off
<Directory />
   <Files ~ "^\.ht">
      deny from all
   </Files>
   Options FollowSymLinks
   AllowOverride none
</Directory>

RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^88.76.202.104
RewriteRule !wartungsarbeiten  wartungsarbeiten [L]

<Directory "/var/www/vhosts/www-user/wartung/">
Options FollowSymLinks
AllowOverride all
</Directory>

ServerSignature Off
# Include the virtual host configurations:
include /etc/apache2/sites-enabled/



Es reicht, wenn du zu je einem Thema auch nur einen Thread erstellst!

Schade daß Du den Thread gelöscht hast, die Antwort auf dieses Problem hätte mich sehr interessiert. Ich habe extra einen neuen Thread gestartet, da ich der Meinung war, daß das ein Thema für sich sei und ich diesen Thread nicht noch verkomplizieren wollte. Soll ich die Frage nun hier Posten?

viele Grüße
jack
jack99
 
Posts: 4
Joined: 14. July 2007 08:54

Postby DJ DHG » 14. July 2007 12:27

DJDHG wrote:4. Mit mod_rewrite alle Anfragen auf den Alias umleiten
lassen, die nicht den bestimmten Adressen entsprechen.


Das soll nicht in den Directory Block! Das gehört global.

mfg DJ DHG
User avatar
DJ DHG
AF Moderator
 
Posts: 2455
Joined: 27. December 2002 13:50
Location: Kiel

Postby jack99 » 14. July 2007 12:56

Das soll nicht in den Directory Block! Das gehört global.


ich habe beides ausprobiert und das Verhalten beschrieben, siehe :

wenn ich die folgenden Zeilen aus dem Directory-Block entferne und im globalen Server-Kontext benutze...



hier nochmals die komplette konfiguration:

Alias /wartungsarbeiten/ /var/www/vhosts/www-user/wartung/

RewriteLog "/var/log/apache2/mod_rewrite.log"
RewriteLogLevel 5
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^88.76.202.104
RewriteRule !wartungsarbeiten /wartungsarbeiten [L]

NameVirtualHost xxx.xxx.xxx.xxx:80
DocumentRoot "/var/www"
UseCanonicalName Off

<Directory />
<Files ~ "^\.ht">
deny from all
</Files>
Options +FollowSymLinks
AllowOverride none
</Directory>

<VirtualHost xxx.xxx.xxx.xxx:80>
ServerName testdomain.de
ServerAlias *.testdomain.de
DocumentRoot /var/www/vhosts/www-user/html/testdomain.de
SuexecUserGroup www-user www-data
<Directory "/var/www/vhosts/www-user/html/testdomain.de">
Options +FollowSymLinks
</Directory>
</VirtualHost>


Bei Aufruf der domain testdomain.de erfolgt keine Umleiteung - nichts passiert, es wird ganz normal die index.html von testdomain.de geladen.

Das kuriose ist wenn ich die folgende Konfiguration ohne vhost teste:

Code: Select all
RewriteLog "/var/log/apache2/mod_rewrite.log"
RewriteLogLevel 5
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^88.76.202.104
RewriteRule !wartungsarbeiten.html /var/www/vhosts/www-user/wartung/wartungsarbeiten.html [L]

NameVirtualHost xxx.xxx.xxx.xxx:80
DocumentRoot "/var/www"
UseCanonicalName Off

<Directory />
   <Files ~ "^\.ht">
      deny from all
   </Files>
   Options +FollowSymLinks
   AllowOverride none
</Directory>


dann erfolgt die Umleitung bei allen Anfragen immer richtig zur wartungsseite.html.

Sobald ich jedoch einen vhosts hizufüge:

Code: Select all
RewriteLog "/var/log/apache2/mod_rewrite.log"
RewriteLogLevel 5
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^88.76.202.104
RewriteRule !wartungsarbeiten.html /var/www/vhosts/www-user/wartung/wartungsarbeiten.html [L]

NameVirtualHost xxx.xxx.xxx.xxx:80
DocumentRoot "/var/www"
UseCanonicalName Off

<Directory />
   <Files ~ "^\.ht">
      deny from all
   </Files>
   Options +FollowSymLinks
   AllowOverride none
</Directory>

<VirtualHost xxx.xxx.xxx.xxx:80>
 ServerName testdomain.de
 ServerAlias  *.testdomain.de
 DocumentRoot /var/www/vhosts/www-user/html/testdomain.de
 SuexecUserGroup www-user www-data
 <Directory "/var/www/vhosts/www-user/html/testdomain.de">
  Options +FollowSymLinks
 </Directory>
</VirtualHost>
 


funktioniert die globale umleitung auf einemal nicht mehr. Es wird beim Auafruf der domain testdomain.de ganz normal die index.html angezeigt?

viele grüße
jack
jack99
 
Posts: 4
Joined: 14. July 2007 08:54


Return to Apache

Who is online

Users browsing this forum: No registered users and 20 guests