Lokale und WAN Namensauflösung

kalle87

Registered User
Hallo Leute,

ich weiß nicht wie ich es genau beschreiben soll, aber ich bin gerade vor einem Problem und weiß nicht wie ich es anpacken soll:

Aus Komplatibiläts und vor allem Wartungs- und Sicherheitsgründen soll eine Webseite in unserem LAN liegen, d.h. erreichbar unter der privaten IP 10.x.y.z. Allerdings muss diese Seite auch aus dem WAN erreichbar sein. Es handelt sich um PHP Seiten. "Leider" werden die Bilder und Links da dynamisch erzeugt. Der "Root" der Page (FQDN) muss in einer config.php included werden, nun ist aber Problem, dass wenn ich die "normale" Domain angebe, dass dann zwar die Pages perfekt aus dem Internet erreicht werden können, aber nicht aus dem LAN (ich kann ja nur per LAN-IP auf den Server zugreifen, also stimmt aber 10.x.y.z nicht mit domain.tld überein).
Wie erreiche ich es denn nun, dass beim Browsen aus dem LAN die LAN-IP mit dem FQDN (Full Qualified Domain Name, also www.domain.tld) ersetzt wird? Ein entsprechender Eintrag in der hosts brachte mir keinen Erfolg!?
Änderungen an den PHP Skripten sind kaum möglich!

Mfg Pascal
 
Wenn ich deine Frage richtig verstehe:

Wie gibst du den "root" denn in der config file an? Hast du es mal mit absoluten Pfaden versucht zb:
$bla = /var/www/user1/public_html
Dann sollte es keine rolle mehr spielen von welcher "Seite" du die Pages aufrufst (LAN/WAN)

Ausserdem solltest du in der httpd.conf dann zwei vhosts anlegen, einmal für domain.tld und einmal für 10.x.x.x
 
Per internem Nameserver kannst du das auf jeden Fall erreichen. Wobei mich ehrlich gesagt wundert dass der hosts-Eintrag nichts gebracht hat :confused:
 
es kommt doch darauf an wo man den hosts eintrag ändert. wenn man den auf dem betreffenden server ändert bringt's nichts, wenn man ihn nur auf den betreffeden rechnern ändert müsste es aus reichen. mir nameserver is es erledigt is aber für 1 domain einwenig übertrieben.
 
djrick said:
Wenn ich deine Frage richtig verstehe:

Wie gibst du den "root" denn in der config file an? Hast du es mal mit absoluten Pfaden versucht zb:
$bla = /var/www/user1/public_html
Dann sollte es keine rolle mehr spielen von welcher "Seite" du die Pages aufrufst (LAN/WAN)

Ausserdem solltest du in der httpd.conf dann zwei vhosts anlegen, einmal für domain.tld und einmal für 10.x.x.x

Hi,

als root meine ich http://www.domain.tld bzw http://10.52.71.10

Gruß Pascal
 
Lege mal am ende deiner httpd.conf folgendes an:

Code:
<VirtualHost DEINEWANIP:80>
ServerName DOMAIN.TLD
ServerAlias  [url]WWW.DOMAIN.TLD[/url]
DocumentRoot /var/www/PFADZUDEINENHTMLDATEIEN
</VirtualHost>

<VirtualHost 10.52.71.10:80>
ServerName 10.52.71.10
DocumentRoot /var/www/PFADZUDEINENHTMLDATEIEN
</VirtualHost>
Und starte den httpd neu, dann solltest du von beiden Seiten korrekt auf die Html/Php Dateien kommen
 
djrick said:
Lege mal am ende deiner httpd.conf folgendes an:
...
Und starte den httpd neu, dann solltest du von beiden Seiten korrekt auf die Html/Php Dateien kommen

Hi djrick,

ja, sowas in der Art hatte ich auch schon probiert, hab jetzt mal Deine Lösung 1:1 übernommen, aber nichts, die Bilder und CSS sucht er immer noch von www.domain.tld/verzeichniszubildern/xyz... und nicht unter 10.52.71.10/verzeichniszubildern/xyz... . Ich weiß nicht wieso, aber denke, es ist eher ein DNS Problem.

@ nobody: In der Hosts aus dem Rechner wo der Browser läuft (und nicht auf dem Server) habe ich die Hosts so angepasst:

Code:
 127.0.0.1    rz01-ks      localhost
10.52.71.10      s01-esw.g-link.de       s01-esw

und Windows neu gestartet (oder geht das bei Windows auch mal ohne Reboot? *gg*)

Aber er löst falsch auf. Wir haben einen Nameserver läufen, allerdings nicht hier im LAN sondern im Rechenzentrum (extern). Ich wüsste nicht ob uns das was hilft. Das Problem ist ja der Aufruf der Dateien vom Apache mit der externen Domain, da der Server ja lokal steht, kann dies nicht gehen und es muss bei loaklen Aufrufen immer die lokale LAN IP genommen werden....

So ein Problem hatte ich leider auch noch nicht und steh leicht auf dem Schlauch....

Grüße Pascal
 
kalle87 said:
die Bilder und CSS sucht er immer noch von www.domain.tld/verzeichniszubildern/xyz... und nicht unter 10.52.71.10/verzeichniszubildern/xyz... . Ich weiß nicht wieso, aber denke, es ist eher ein DNS Problem.
Denk ich nicht. Schau dir mal die Seiten an, wie die bilder im <img - Tag Verlinkt sind wenn sie so angegeben sind:

<img src=http://www.domain.tld/images/image.jpg>

dann liegts nicht an der DNS Config sondern ein einem blöden HTML Code ;)
wenn sie so angegeben sind:

<img src=images/image.jpg>

dann ists richtig und dann wird er auch nicht auf die Domain zugreifen wollen.
 
Hi djrick,

djrick said:
Denk ich nicht. Schau dir mal die Seiten an, wie die bilder im <img - Tag Verlinkt sind wenn sie so angegeben sind:

<img src=http://www.domain.tld/images/image.jpg>

ja, das ja das Problem, es sind absolute Pfadangaben. Also ich habe ja auch zum Glück nit das Teil geschrieben, sonst würde ich mich sonstwo hintreten....

Also damit mal ein wenig Licht in alles kommt, es handelt sich um ein Shopsystem (www.oscommerce.com), das soll eben aus Wartungs- und Datenbankanbindungsgründen (auch Sicherheit) hier lokal auf einem Server in der Firma laufen und nicht auf unseren Webservern im Rechenzentrum in Nürnberg bzw Frankfurt/Main. Nunja, das LAN hat nun 10.52.71. und 10.52.72. Adressen, von aussen soll mal alles (bald ;) ) unter www.gl-hardware.de erreichbar sein. Dazu läuft derzeit noch ein dyndns Account der auf unsere dynamische IP der einen DSL Leitung zeigt, aber in den kommenden Wochen steht auf meiner ToDo Liste das in unsere eigenen Nameserver zu integrieren.....

Jetzt hab ich eben nur das Problem wie ich das nun löse, dass ich auch lokal hier den Shop betrachten kann und vor allem auch die Admin-Oberfläche mit Bildchen etc. anzeigen kann......

Sonnige Grüße aus Nordhessen
Pascal
 
Also... wenn es sich um html oder php-Seiten dreht, könntest Du das Brecheisen auf der Kommandozeile ansetzen:
Code:
#!/bin/sh
for i in `find . -name "*.php" -print`; do
        sed 's/src="www.domain.de/src="/'
done
Wenn die Inhalte (also die Links mit dem vollen Pfad) in einer Datenbank rumliegen, müsstest Du die Tabellen entsprechend umkrempeln.

Workarounds wären dann noch Nameserver-seitig im Intranet denkbar, aber nicht sonderlich schön...
 
Ich kenen OS Comerce, ich habe das selbst als Shopsystem für eine Firma laufen.
Also verstehe ich auch dein Problem. Mir fällt dazu leider auch keine Lösung ein. Vielleicht würde das gehen:

OSComerce 2mal installieren...einmal für die Vhost der LAN IP und einmal für die Vhost der WANIP und beide OSComerce von der selben Datenbank laufen lassen. Dann hast du OSComerce einmal fürs LAN und einmals fürs WAN jedoch immer mit dem selben Inhalt (da ja gleiche MySQL Datenbank) und egal auf welcher Seite du etwas änderst (An Produkten etc) wirds in beiden übernommen. Bloss Style-Änderungen etc muss man halt Doppelt machen. Aber wenn die LAN Seite nur zur "Überwachung" dienst ist das größtenteils ja nicht nötig
 
Hi djrick,

das ist eine ganz gute Idee, daran habe ich noch gar nicht gedacht :) . Das könnte ich machen, ich lege einfach einen "internen" VirtualHost an. Mit dem Design ist eigentlich egal, aber auch hier kann man ja schnell die geänderten Dateien über die "internen" drüber kopieren, bzw was noch besser ist, man ändert erst die internen und dann wenn alles so ist wie man will, dann werden erst die externen, also öffentlichen Dateien überschrieben. So kommt es nie zu "öffentlichen" Design-Fehlern.....

Ein wunderschönes Wochenende!
Grüße Pascal
 
Na siehste haben wir doch noch eine einigermaßen gute Lösung für das Problem gefunden :-)

Schönes Wocheende nach Hessen!
 
Mir kommt noch eine Idee, was wenn man die Deisgn-Verzeichnisse linken würde (Softlink in Linux)

Pascal
 
So, vielen Dank für die Anregungen, es funktioniert jetzt bis auf eine Sache einwandfrei, ich habe allerdings die Sache mit den Softlinks verworfen und den Apache anders angepasst:

Code:
 <!-- /etc/apache/vhost.conf -->

NameVirtualHost 10.52.71.10:80
NameVirtualHost s01-esw.g-link.de

<VirtualHost 10.52.71.10:80 s01-esw.g-link.de>
ServerName gl-hardware.de
ServerAlias  www
DocumentRoot /home/www/web2/html
User web2
Group ftpuser
ScriptAlias /cgi-bin/ /home/www/web2/html/cgi-bin/
php_admin_value open_basedir /home/www/web2/
php_admin_value upload_tmp_dir /home/www/web2/phptmp/
<Directory "/home/www/web2/html">
AllowOverride Options
AllowOverride AuthConfig
DirectoryIndex index.php index.html index.htm index.shtml index.sht
<IfModule mod_setenvif.c>
<IfDefine SSL>
        SetEnvIf User-Agent ".*MSIE.*" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0
</IfDefine>
</IfModule>
<IfModule mod_php4.c>
php_value session.use_trans_sid 0
php_value register_globals 1
</IfModule>
</Directory>
</VirtualHost>

Und jetzt ab ins Wochenende....
Pascal
 
Last edited by a moderator:
kalle87 said:
Der "Root" der Page (FQDN) muss in einer config.php included werden
Auch wenn schon eine Lösung existiert, aber warum ermittelst Du die Domain, über die das PHP-Script aufgerufen wird, nicht dynamisch aus den Server-Variablen? ($_SERVER['SERVER_NAME'] bzw. für älteres PHP: $HTTP_SERVER_VARS['SERVER_NAME'])
Das funktioniert auch innerhalb einer config.inc-Datei.

huschi.
 
Huschi said:
Auch wenn schon eine Lösung existiert, aber warum ermittelst Du die Domain, über die das PHP-Script aufgerufen wird, nicht dynamisch aus den Server-Variablen? ($_SERVER['SERVER_NAME'] bzw. für älteres PHP: $HTTP_SERVER_VARS['SERVER_NAME'])
Das funktioniert auch innerhalb einer config.inc-Datei.

Tag,

das wäre auch evt eine Möglichkeit, müsste ich mal in die Dateien reinsehen. Wie gesagt, ich habe das Teil ja nicht geschrieben und kenne die Inneren Abläufe so gut wie nicht.

Mit der gefundenen Lösung bin ich nämlich nicht so richtig zufrieden, macht alles einen ziemlichen Verwaltungsaufwand.

Ich habe eine Frage mal am Rande: Seitdem ich die bereits gepostete vhost.conf für den apache laufen habe funktioniert komischerweise phpmyadmin nicht mehr. Was ist da los? (sorry, bin leider nicht der Indianer Freak - kennt jemand gute Tutorials oder Literatur zum Apache?)

Mfg Pascal
 
kalle87 said:
Seitdem ich die bereits gepostete vhost.conf für den apache laufen habe funktioniert komischerweise phpmyadmin nicht mehr.
Dafür mußt Du auch dazu schreiben, wo Dein phpMyAdmin installiert ist und wie Du es aufrufst.
Hast Du auf dem Server Confixx laufen, oder hast Du nur die Verzeichnisstruktur kopiert?

(sorry, bin leider nicht der Indianer Freak - kennt jemand gute Tutorials oder Literatur zum Apache?)
Ja: apache.org ;)

huschi.
 
Huschi said:
Dafür mußt Du auch dazu schreiben, wo Dein phpMyAdmin installiert ist und wie Du es aufrufst.

Hi Huschi,

Standard,

also mit Include in der httpd.conf wird das eingebunden:
Code:
<IfModule mod_alias.c>
    Alias /phpmyadmin /usr/share/phpmyadmin
</IfModule>

<DirectoryMatch /usr/share/phpmyadmin/>

    DirectoryIndex index.php
    Options +FollowSymLinks
    AllowOverride None

    Order allow,deny
    Allow from all

    <IfModule mod_mime.c>
        <IfModule mod_php3.c>
            AddType application/x-httpd-php3 .php

            php3_magic_quotes_gpc Off
            php3_track_vars On
            php3_include_path .
        </IfModule>

        <IfModule mod_php4.c>
            AddType application/x-httpd-php .php

            php_flag magic_quotes_gpc Off
            php_flag track_vars On
            php_flag register_globals On
            php_value include_path .
        </IfModule>

        <IfModule !mod_php3.c>
        <IfModule !mod_php4.c>
        <IfModule mod_actions.c>
        <IfModule mod_cgi.c>
            AddType application/x-httpd-php .php

            Action application/x-httpd-php /cgi-bin/php4
        </IfModule>
        </IfModule>
        </IfModule>
        </IfModule>
</IfModule>

</DirectoryMatch>

Ging und geht überall einwandfrei, nur auf diesem Rechner nicht mehr, seitdem ich die vhost.conf angelegt habe.

Danke für die Literatur ;)

Gruß Pascal
 
Back
Top