Apache2 Weiterleitung

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

Apache2 Weiterleitung

Postby tiptel170 » 17. September 2013 22:22

Hallo Gemeinde,

ich bin neu hier. Befasse mich mit folgendem Problem. Ich habe den Apache2 als Web-Server laufen, der auch im I-Net erreichbar ist. Nun habe ich Geräte die ich gerne über die Weboberfläche verwalten möchte. Aber da die Geräte im lokalem Netz liegen sind die logischerweise nicht erreichbar im I-Net.

Darauf hin habe ich mir den ProxyPass installiert. Allerdings bekomme ich den Fehler 404 oder bei anderen Geräten sind die Seiten unvollständig.

Hier meine Konfiguration:
Code: Select all
LoadFile /usr/lib/libxml2.so.2

#Include /etc/apache2/mod_proxy_html.conf

LoadModule xml2enc_module /usr/lib/apache2/mod_xml2enc.so

<IfModule mod_proxy.c>
       ProxyRequests Off
       ProxyVia On
</IfModule>

NameVirtualHost *:80
<VirtualHost *:80>
       ServerAdmin system@mail.casa.red
       ServerName xxxxx.de
       DocumentRoot /srv/www/htdocs/dwl2100ap
       SetOutputFilter proxy-html
       ProxyHTMLLogVerbose On
       ProxyHTMLExtended On
       ProxyPass /dwl2100ap http://dwl2100ap.casa.red
#       RewriteEngine On
#       RewriteRule /dwl2100ap/(.*)   http://dwl2100ap.casa.red/$1 [P]
       ProxyHTMLURLMap http://dwl2100ap.casa.red /dwl2100ap
           <Location /dwl2100ap/>
              ProxyPassReverse /
              ProxyHTMLURLMap / /dwl2100ap/
              ProxyHTMLURLMap /dwl2100ap /dwl2100ap
              RequestHeader    unset  Accept-Encoding
           </Location>
       ServerAdmin system@mail.casa.red
       ServerName msesis.de
       DocumentRoot /srv/www/htdocs/dwl2100ap
       SetOutputFilter proxy-html
       ProxyHTMLLogVerbose On
       ProxyHTMLExtended On
       ProxyPass /laserjet3055 http://laserjet3055.casa.red
#       RewriteEngine On
#       RewriteRule /laserjet3055/(.*)   http://dwl2100ap.casa.red/$1 [P]
       ProxyHTMLURLMap http://laserjet3055.casa.red /laserjet3055
           <Location /laserjet3055/>
              ProxyPassReverse /
              ProxyHTMLURLMap / /laserjet3055/
              ProxyHTMLURLMap /laserjet3055 /laserjet3055
              RequestHeader    unset  Accept-Encoding
           </Location>
       ProxyPass /mfcj6510 http://mfcj6510.casa.red/
       ProxyHTMLURLMap http://mfcj6510.casa.red /mfcj6510
           <Location /mfcj6510/>
              ProxyPassReverse /
              ProxyHTMLURLMap / /mfcj6510/
              ProxyHTMLURLMap /mfcj6510 /mfcj6510
              RequestHeader    unset  Accept-Encoding
           </Location>
       ProxyPass /agfeo http://server.casa.red:5080/
       ProxyHTMLURLMap http://server.casa.red:5080 /agfeo
           <Location /agfeo/>
              ProxyPassReverse /
              ProxyHTMLURLMap / /agfeo/
              ProxyHTMLURLMap /agfeo /agfeo
              RequestHeader    unset  Accept-Encoding
           </Location>
       ProxyPass /webmin http://server.casa.red:12178/
       ProxyHTMLURLMap http://server.casa.red:12178 /webmin
           <Location /webmin/>
              ProxyPassReverse /
              ProxyHTMLURLMap / /webmin/
              ProxyHTMLURLMap /webmin /webmin
              RequestHeader    unset  Accept-Encoding
           </Location>
       RewriteRule ^/lancom$ /lancom/ [L]
       ProxyPass /lancom http://lancom.casa.red/
       ProxyHTMLURLMap http://lancom.casa.red:5080 /lancom
           <Location /lancom/>
              ProxyPassReverse /
              ProxyHTMLURLMap / /lancom/
              ProxyHTMLURLMap /lancom /lancom
              RequestHeader    unset  Accept-Encoding
           </Location>
</VirtualHost>


Hier die Apache2 Version:
Code: Select all
rpm -qa |grep apache
apache2-mod_perl-devel-2.0.4-40.19
apache2-devel-2.2.12-1.28.1
apache2-2.2.12-1.40.1
apache2-mod_fcgid-2.2-31.21.1
apache2-mod_tidy-0.5.5-32.18
apache2-doc-2.2.12-1.40.1
apache2-mod_php5-5.2.14-0.7.30.48.1
apache2-example-pages-2.2.12-1.40.1
apache2-mod_macro-1.1.8-193.18
apache2-worker-2.2.12-1.40.1
apache2-mod_mono-2.6.3-5.5.114
apache2-mod_scgi-1.12-1.19
apache2-mod_proxy_html-3.1.2-1.1
apache2-utils-2.2.12-1.40.1
apache2-prefork-2.2.12-1.40.1
apache2-mod_auth_ntlm_winbind-0.0.0.lorikeet_svn_682-1.18
apache2-mod_security2-2.5.6-2.10.1
apache2-mod_xml2enc-1.0.3-1.1
apache2-mod_perl-2.0.4-40.19
apache2-mod_apparmor-2.5.1.r1445-55.59.1


Bei den Änderungen habe ich den Apache2 auch neu gestartet. Und die proxy-Module werden auch geladen.

Was mache ich da falsch?
Gruß tiptel170
tiptel170
 
Posts: 3
Joined: 17. September 2013 22:08
Operating System: SLES 11.2

Re: Apache2 Weiterleitung

Postby Nobbie » 18. September 2013 09:44

>Was mache ich da falsch?

Du hast offensichtlich irgendwo irgendwelche Fragmente abgeschrieben und zusammengestoppelt, ohne auch nur ansatzweise zu wissen, was Du da machst. Da fehlt die Hälfte, manche Dinge sind wahrscheinlich nicht notwendig, andere syntaktisch falsch. Das ist grausames Kroppzeug. Wo hast Du das Zeug her?
Nobbie
 
Posts: 13179
Joined: 09. March 2008 13:04

Re: Apache2 Weiterleitung

Postby tiptel170 » 18. September 2013 11:09

Na danke, super Kommentar. Wozu gibt es denn eine Doku von Apache2-Server. Von dort habe ich die Infos. Auf solche hilfreichen Kommentare kann ich gerne verzichten. Anstatt hier jemanden - gleich als "Idioten" bloß (so liest es sich auf dem ersten Blick!) zustellen und keine vernünftige Hilfestellung zu geben was falsch sein könnte, das finde ich nicht Fair gegenüber mir oder auch anderen die diesen Post mit lesen und vielleicht auch das gleiche Problem haben.

Gruß tiptel170
tiptel170
 
Posts: 3
Joined: 17. September 2013 22:08
Operating System: SLES 11.2

Re: Apache2 Weiterleitung

Postby Nobbie » 18. September 2013 11:35

tiptel170 wrote:Na danke, super Kommentar. Wozu gibt es denn eine Doku von Apache2-Server.


Da steht das sicher nicht in dieser geballten Reihenfolge, es hat keinen Sinn, alle Direktiven und Statements zusammenzuklatschen und zu hoffen, dass es läuft. Da sind ja sogar Direktiven doppelt (ServerName beispielsweise), das ist einfach falsch.

Also, grundsätzliche Vorgehensweise:

a) für jedes Gerät legst Du einen eigenen VirtualHost an, mit einem entsprechenden Namen/Subdomain. Also im Prinzip so, wie es auch schon andeutungsweise aussieht:

laserjet3055.domain.de (leider kenne ich Deine externe Domain nicht, deswegen benutze ich domain.de)
lancom.domain.de
server.domain.de
...

usw. (wobei ich nicht weiß, was das alles ist, aber Du wirst es wissen).

Jede einzelne dieser Subdomains bekommt eine eigene VirtualHost Definition.

b) In jeder dieser Definitionen schreibst Du die beiden elementarsten Anweisungen für den Reverse Proxy hinein, das ist ProxyPass und ProxyPassReverse. Also ein Beispiel: (vermutlich hast Du laserjet3055.casa.red in Deiner Hosts Datei angelegt, so dass da der Laserjet erreich wird?!)

Code: Select all
<VirtualHost *:80>
ServerName laserjet3055.domain.de
ProxyPass / http://laserjet3055.casa.red/
ProxyPassReverse /  http://laserjet3055.casa.red/
</VirtualHost>


3) und das machst Du für jedes Gerät, bei manchen muss offensichtlich auch der Port noch angegeben werden, das ist kein Problem. Wenn Du die alle sauber definiert hast, müßte es im Prinzip (nach Neustart von Apache) schon ausreichen, wenn Du beispielsweise

http://laserjet3055.domain.de/

im Browser eingibst, um von extern auf den Laserjet zuzugreifen. Es kann allerdings auch passieren, dass die Adminsoftware des Laserjets eine Redirect auf eine eigene Seite drin hat, die aber NICHT mit laserjet3055.casa.red anspricht (ist das im Laserjet eingestellt?), sondern hart mit der IP (beispielsweise http://192.168.1.30 oder so). Diese von Dir gewählten Namen sind zwar schön und sprechend, aber es kann notwendig sein, dass Du stattdessen überall die harten IPs nehmen musst. Das musst Du ausprobieren. Im Zweifel wird es mit den jeweiligen IPs besser funktionieren. Dann sieht das also so aus:

Code: Select all
<VirtualHost *:80>
ServerName laserjet3055.domain.de
ProxyPass / http://192.168.1.30/
ProxyPassReverse / http://192.168.1.30/
</VirtualHost>


Der Versuch, das über Ordnernamen zu regeln, hat das große Problem (und hast Du tonnenweise Direktiven kreuz und quer übernommen), dass man den Verzeichnisnamen ./laserjet3055 auf das Rootverzeichnis / der Adminoberfläche im Laserjet mappen muss. Da können viele unangenehme Dinge passieren (das würde definitiv diesen Beitrag sprengen, ich kann Dir ein gutes Tutorial verlinken), weswegen auch empfohlen wird, möglichst gleichnamige Verzeichnisse aufeinander abzubilden und am allerbesten einfach "/" auf "/". Und das erreicht man am einfachsten, wenn man für jeden ProxyPass einen eigenen VirtualHost anlegt.

Das ganze andere Geraffel ProxyHTML.... und ProxyVia und und und und - kann alles weg. Versuche es erst einmal mit dieser Basiskonfiguration - die tut es in 99% aller Fälle.
Nobbie
 
Posts: 13179
Joined: 09. March 2008 13:04

Re: Apache2 Weiterleitung

Postby tiptel170 » 18. September 2013 12:10

Danke für den Hinweis. Wenn ich die "domain.de" aufrufe mit dem obigen Beispiel, dann bekomme ich den Drucker als Startseite. Was eigentlich nicht sein sollte. Aber die Seite wird schon mal komplett dargestellt und die internen Links funktionieren auch.
Die Geräte werden über einen DHCP-Server mit einer MAC-Adresse angesprochen und über den internen DNS-Server im Netzwerk zu Verfügung gestellt.
Als Startseite sollte mein Firmenlogo normalerweise erscheinen. Und alles was ich hinter / (Schrägstrich) habe, mein Webmail oder auch Egroupware wird mit "Seite nicht gefunden" quittiert.
tiptel170
 
Posts: 3
Joined: 17. September 2013 22:08
Operating System: SLES 11.2

Re: Apache2 Weiterleitung

Postby Nobbie » 18. September 2013 12:36

tiptel170 wrote:Danke für den Hinweis. Wenn ich die "domain.de" aufrufe mit dem obigen Beispiel, dann bekomme ich den Drucker als Startseite. Was eigentlich nicht sein sollte.


Hä? Genau das willst Du doch???

P.S.: Oder meinst Du, wenn Du nur "domain.de" (statt laserjet3055.domain.de) eingegeben hast? Wenn das das Problem ist, hast Du einen Fehler in der VirtualHost Definition (meistens fehlt die Anweisung "NameVirtualHost *:80" oder ähnlich).

P.P.S.: Oder Du hast vergessen, auch für "domain.de" einen VirtualHost anzulegen?! Wenn man mit virtuellen Host arbeitet, muss man für ALLE Domains/Subdomains einen virtuellen Host angeben (auch für die Hauptseite www.domain.de bzw. domain.de) nicht nur für eine Subdomain. Denn sonst werden ALLE Requests auf diesen einen VirtualHost geleitet (genau was bei Dir gerade passiert).

Einfacherweise schreibst Du beim VirtualHost für domain.de und www.domain.de (mit ServerAlias kannst Du beide Domains für den gleichen VirtualHost definieren) genau die Konfiguration (DocumentRoot etc.) hinein, die bislang "draußen" (ohne VirtualHost drum herum) stand. Denn diese Anweisungen "draußen" werden von Apache ignoriert, wenn Du mindestens einen VirtualHost auf dieser IP definiert hast.
Nobbie
 
Posts: 13179
Joined: 09. March 2008 13:04


Return to Apache

Who is online

Users browsing this forum: No registered users and 185 guests