mixen von namens- und portbasierten Hosts nicht möglich?

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

mixen von namens- und portbasierten Hosts nicht möglich?

Postby hüdl » 09. February 2006 14:07

(mein 2.Versuch hier Hilfe zu bekommen, hoffe ich mach alles richtig...)

Hallo
Ich wollte mit Apache2 (SUSE 9.3) ein öffentliches Verzeichnis zugänglich machen. Zusätzlich möchte ich ein Verzeichnis mit SSL veröffentichen. Die (pseudo)
DNS Einträge sind 199.96.155.110 ÖffentlicherServer
199.96.155.110 InternerServer


Dazu folgende httpd.conf:

LoadModule mime_module /usr/lib/apache2-prefork/mod_mime.so
LoadModule dir_module /usr/lib/apache2-prefork/mod_dir.so
LoadModule autoindex_module /usr/lib/apache2-prefork/mod_autoindex.so
LoadModule alias_module /usr/lib/apache2-prefork/mod_alias.so
LoadModule log_config_module /usr/lib/apache2-prefork/mod_log_config.so
LoadModule ssl_module /usr/lib/apache2-prefork/mod_ssl.so

ServerRoot "/etc/apache2"

Listen 80
Listen 443
User wwwrun

SSLCertificateFile /etc/apache2/sysconfig.d/huthlinux.cert.cert
SSLCertificateKeyFile /etc/apache2/sysconfig.d/huthlinux.cert.key

ServerName ÖffentlicherServer
DocumentRoot /srv/www/htdocs/offen

<VirtualHost 199.96.155.110:443>
DocumentRoot /srv/www/htdocs/intern
ServerName InternerServer
SSLEngine on
</VirtualHost>

Also bei http Anfragen = Verzeichnis offen
bei https Anfragen= Verzeichnis intern

[size=12]Mittels rewrite_mod (und auch redirect) wollte ich nun Anfragen an http://InternerServer.blabla.de/ auf https umleiten.
Leider leitet er dann auch die Anfragen an http://ÖffentlicherServer.blabla.de um, weil ja die gleiche ip im DNS vergeben ist
.
[/size]

Problem: Ich darf nur eine ip (teuer)verwenden, mixen von namensbasierten und portbasierten Host klappt nicht.

Ich weiß ich könnte mich belesen...leider fehlt mir die Zeit denn das Konzept muss in Kürze stehen.
...................nehme jede HILFE dankend an............................................
hüdl
 
Posts: 9
Joined: 01. February 2006 16:47

Postby Wiedmann » 09. February 2006 15:04

mixen von namensbasierten und portbasierten Host klappt nicht.

portbasierende VHosts gibt es nicht. Namebasierende und IP-basierende kann man dagegen mischen.

Mittels rewrite_mod (und auch redirect) wollte ich nun Anfragen an http://InternerServer.blabla.de/ auf https umleiten.
Leider leitet er dann auch die Anfragen an http://ÖffentlicherServer.blabla.de um, weil ja die gleiche ip im DNS vergeben ist.

Jetzt kennt halt keiner deine Rewrite-Regeln. Schätzungsweise machst du dort aber keine Ausscheidung welcher Host-Header bei der Anfrage benutzt wurde oder alternativ aus welchem Netzwerk die Anfrage kam.
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby hüdl » 09. February 2006 15:42

Danke erstmal für die Antwort... :o

einen Virtuellen Host den ich über einen Port anspreche ergibt doch einen VHost oder? :?

Namensbasierte und ip geht zu mischen ja...aber wie kann ich dann angenommen ich habe 2 namensbasierte (weil 2.ip geht nicht=zu teuer) und das würde dann so aussehen:

NameVirtualHost 199.96.155.110

<VirtualHost ÖffentlicherServer>
ServerName ÖffentlicherServer
DocumentRoot /srv/www/htdocs/offen
</VirtualHost>

<VirtualHost InternerServer>
DocumentRoot /srv/www/htdocs/intern
ServerName InternerServer
SSLEngine on
</VirtualHost>

Jetzt funktioniert SSL doch gar nicht...






Ich brauche jetzt eine Regel (vieleicht auch eine Umleitung auf ein script)die den URL so filtert das das er Anfragen auf port :80 des Viruellen Hosts auf Port :443 umleitet
hüdl
 
Posts: 9
Joined: 01. February 2006 16:47

Postby Wiedmann » 09. February 2006 15:58

Jetzt funktioniert SSL doch gar nicht...

Wieso nicht? Ausser du hast was verbogen. Der VHosts für SSL wird ja in einer separaten Datei eingestellt und für die IP "_default_:443". Das dortige DokumentRoot musst du halt auf "/srv/www/htdocs/intern" ändern. Dieser SSL-VHosts würde sich zwar auch über die andere Domain ansprechen lassen, aber das kannst du ja nachträglich über mod_rewrite oder SetEnvIf verhindern. Grundsätzlich kann SSL nur über IP-basierende VHosts arbeiten, da der Verbindungsaufbau bei SSL über die IP und nicht über den Domainnamen geschieht.

aber wie kann ich dann angenommen ich habe 2 namensbasierte (weil 2.ip geht nicht=zu teuer) und das würde dann so aussehen:

Deine VHosts für HTTP könnten dann z.B. ungefähr so aussehen:
Code: Select all
NameVirtualHost *:80

<VirtualHost *:80>
    ServerName oeffentlicher_server:80
    DocumentRoot /srv/www/htdocs/offen
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot /srv/www/htdocs/intern
    ServerName interner_server:80
    Redirect permanent  / https://interner_server
</VirtualHost>
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby hüdl » 09. February 2006 17:21

Danke nochmal...hat mich schon ein Stück weiter gebracht. :)

<VirtualHost*:80>
ServerName ÖffentlicherServer.de:80
DocumentRoot /srv/www/htdocs/offen
</VirtualHost>

<VirtualHost*:80>
DocumentRoot /srv/www/htdocs/intern
ServerName InternerServer.de.de:80
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^192\.168\.1\.\d+$
RewriteRule !^192\.168\.0\.\d+$ https://InternerServer.de[R]
</VirtualHost>

<VirtualHost *:443>
DocumentRoot /srv/www/htdocs/intern
ServerName InternerServer.de
SSLEngine on
</VirtualHost>


WIE KANN ICH JETZT HIER VERHINDERN DASS ÜBER HTTPS://ÖffentlicherServer.de
Auf das Verzeichnis intern des InternenServers zugegriffen werden kann


Und dann hab ichs aber :oops:
hüdl
 
Posts: 9
Joined: 01. February 2006 16:47


Return to Apache

Who is online

Users browsing this forum: No registered users and 231 guests