Hallo alle zusammen,
heute widmen wir uns dem Thema – wie kann ich zwischen abgefragten Domains unterscheiden und unterschiedlichen Inhalt ausliefern. (bekanntlich gibt es einen Unterschied zwischen ‚www.schweissen.de‘ und der Seite ohne ‚w‘)
Apache VirtualHosts
Wieder einmal der Links zur entsprechenden Seite zum Apache Projekt, vielleicht erzähle ich hier ja auch nur Stuss…
Apache – virtuelle Hosts
Tipp:
Grundsätzlich mal die Erinnerung, ’never touch a running system‘, also wenn dann würde ich nicht eine Konfiguration für alle vHosts schreiben, sondern für jede Website eine eigene Definition im Ordner ‚/etc/httpd/conf.d/‘ ablegen.
Standard-Beispiel der Konfiguration selbst:
Die erste Zeile würde ich in der ‚httpd.conf‘ unkommentieren und ggf. nur ‚<VirtualHost>‘ in die weiteren Konfigurationsdateien schreiben. (das SSL-Äquivalent ist in der ‚/etc/httpd/conf.d/ssl.conf‘ hinterlegt)
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.example.com
DocumentRoot /www/docs/dummy-host.example.com
ServerName dummy-host.example.com
ErrorLog logs/dummy-host.example.com-error_log
CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>
Also würde dies für die Seite: ‚www.example.com‘ wie folgt aussehen:
<VirtualHost Schnittstelle:Port>
ServerAdmin deine@mail.tld
DocumentRoot /var/www/vhosts/www.example.com
ServerName www.example.com
ErrorLog logs/www.example.com-error_log
CustomLog logs/www.example.com-access_log common
</VirtualHost>
Problem am Rande:
Dies legt den Aufruf der Seite mit einem Verzeichnis über einen DNS-Namen fest, nicht aber die Berechtigungen falls der Ordnerpfad in der ‚httpd.conf‘ noch gar nicht hinterlegt ist…daher siehe unten!
Notiz am Rande:
Ggf. sollten die Logfiles dann als extra Job im Fail2ban hinterlegt werden!!!
Beispiel für vHosts mit Verzeichnis und SSL-Support:
<VirtualHost *:80>
ServerName www.example.com
ServerAdmin deine@mail.tld
DocumentRoot /var/www/vhosts/www.example.com
<Directory /var/www/vhosts/www.example.com>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/httpd/www.example.com-error.log
LogLevel warn
CustomLog /var/log/httpd/www.example.com-access.log combined
ServerSignature On
</VirtualHost>
<VirtualHost *:443>
ErrorLog /var/log/httpd/www.example.com-ssl_error.log
TransferLog /var/log/httpd/www.example.com-ssl_access.log
LogLevel warn
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLCertificateFile /etc/pki/tls/certs/www.example.com.crt
SSLCertificateKeyFile /etc/pki/tls/private/www.example.com.key
<Files ~ „.(cgi|shtml|phtml|php?)$“>
SSLOptions +StdEnvVars
</Files>
<Directory /var/www/vhosts/www.example.com>
SSLOptions +StdEnvVars
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
SetEnvIf User-Agent „.*MSIE.*“
nokeepalive ssl-unclean-shutdown
downgrade-1.0 force-response-1.0
CustomLog logs/ssl_request_log
„%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x „%r“ %b“
</VirtualHost>
Standard der SSL-Konfiguration ’ssl.conf‘:
Falls eine Warnung bzgl. einer Überlappung der Konfigurationen kommt empfehle ich ‚_default_:443‘ in die lokale IP/den Loopback zu ändern…
<VirtualHost _default_:443>
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
LogLevel warn
SSLEngine on
SSLProtocol all -SSLv2
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
<Files ~ „.(cgi|shtml|phtml|php3?)$“>
SSLOptions +StdEnvVars
</Files>
<Directory „/var/www/cgi-bin“>
SSLOptions +StdEnvVars
</Directory>
SetEnvIf User-Agent „.*MSIE.*“
nokeepalive ssl-unclean-shutdown
downgrade-1.0 force-response-1.0
CustomLog logs/ssl_request_log
„%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x „%r“ %b“
</VirtualHost>
Artikel auf dem Testsystem verifiziert.