tooooooobi
Goto Top

RewriteRule in Stern:80 wird ignoriert wenn xx.firma.domain:80 vorhanden ist

Moin zusammen,

seit Jahren laufen mehrere VirtualHosts ausschließlich auf Port 443, alles was auf Port 80 reinkommt, wird erfolgreich umgeleitet:

<VirtualHost kunden.firma.domain:443>
DocumentRoot "/daten/www/kunden"  
..
</VirtualHost>

<VirtualHost apps.firma.domain:443>
DocumentRoot "/daten/www/apps"  
..
</VirtualHost>

<VirtualHost *:80>
    RewriteEngine On
    RewriteCond %{SERVER_PORT} !^443$
    RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L]
</VirtualHost>


Nun brauchen bestimmte Geräte die kein https können eine Datei im Netz (die unsensible und nicht geheime Steuerdaten enthält), also wie folgt angebaut:

<VirtualHost kunden.firma.domain:443>
DocumentRoot "/daten/www/kunden"  
..
</VirtualHost>

<VirtualHost apps.firma.domain:443>
DocumentRoot "/daten/www/apps"  
..
</VirtualHost>

<VirtualHost sonderlocke.firma.domain:80>
DocumentRoot "/daten/www/sonderlocke"  
..
</VirtualHost>

<VirtualHost *:80>
    RewriteEngine On
    RewriteCond %{SERVER_PORT} !^443$
    RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L]
</VirtualHost>

http://sonderlocke.firma.domain/datei.xml ist für die alten Geräte erreichbar.

Nun funktioniert die generelle Umleitung aber nicht mehr, http://kunden... wird nicht mehr umgeleitet.

Sowie ich zum Test bei der Sonderlocke den Port auf 443 ändere (was die alten Geräte ja aber nicht können), funktioniert die generelle Umleitung wieder.

Ich habe nun als Workaround Umleitungen für alle vhosts (kunden.firma.domain:80 statt *.80) angelegt.

Aber schön ist das nicht. Wo genau liegt das Problem?
LG
Tobias

Content-ID: 8187017131

Url: https://administrator.de/forum/rewriterule-in-stern-80-wird-ignoriert-wenn-xx-firma-domain-80-vorhanden-ist-8187017131.html

Ausgedruckt am: 30.12.2024 um 16:12 Uhr

Dani
Dani 19.08.2023 um 12:00:57 Uhr
Goto Top
Moin,
Aber schön ist das nicht. Wo genau liegt das Problem?
ich würde sagen, dass liegt daran, dass du mit einem dedizierten vHosts den Wilcdard vHosts überschreibst. Was wird dir bei apachectl -S ausgeben?

Unabhängig davon würde es so probieren:
<VirtualHost *:80>
ServerName sonderlocke.firma.domain
DocumentRoot "/daten/www/sonderlocke"    

Guß,
Dani
tooooooobi
tooooooobi 22.08.2023 um 09:03:04 Uhr
Goto Top
Moin Dani,

ja das mit dem "Wildcard überschreiben" habe ich mir auch genau so gedacht. Eine Syntax für "* außer" habe ich nicht gefunden.

Deinen Vorschlag habe ich noch nicht probiert weil mir nicht genau klar ist welche Zeilen ich dafür entfernen soll. 10-14 raus und Deinen Code (ZEILE 2+3) zwischen 16 und 17?

Ich kann das Ganze auch nicht tagsüber eliebig ausprobieren weil das Ding produktiv ist.

Hier mal die Ausgabe mit den 3 Ausnahmen die wie folgt aussehen:

<VirtualHost xxx.firma.domain:80>
    RewriteEngine On
    RewriteCond %{SERVER_PORT} !^443$
    RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L]
    ServerName dnsname.linux.firma.net
</VirtualHost>

LG
tobias


VirtualHost configuration:
10.220.32.19:443        is a NameVirtualHost
         default server 10.220.32.19 (/etc/httpd/sites-enabled/000-default.conf:3)
         port 443 namevhost 10.220.32.19 (/etc/httpd/sites-enabled/000-default.conf:3)
         port 443 namevhost kunden.firma.domain (/etc/httpd/sites-enabled/000-default.conf:24)
         port 443 namevhost apps.firma.domain (/etc/httpd/sites-enabled/000-default.conf:44)
         port 443 namevhost xxx.firma.domain (/etc/httpd/sites-enabled/000-default.conf:65)
         port 443 namevhost dnsname.linux.firma.net (/etc/httpd/sites-enabled/000-default.conf:85)
         port 443 namevhost yyy.firma.domain (/etc/httpd/sites-enabled/000-default.conf:109)
         port 443 namevhost zzz.firma.domain (/etc/httpd/sites-enabled/000-default.conf:129)
         port 443 namevhost aaa.firma.domain (/etc/httpd/sites-enabled/000-default.conf:149)
10.220.32.19:80         is a NameVirtualHost
         default server sonderlocke.firma.domain (/etc/httpd/sites-enabled/000-default.conf:172)
         port 80 namevhost sonderlocke.firma.domain (/etc/httpd/sites-enabled/000-default.conf:172)
         port 80 namevhost dnsname.linux.firma.net (/etc/httpd/sites-enabled/000-default.conf:190)
         port 80 namevhost dnsname.linux.firma.net (/etc/httpd/sites-enabled/000-default.conf:198)
         port 80 namevhost dnsname.linux.firma.net (/etc/httpd/sites-enabled/000-default.conf:206)
*:443                  dnsname.linux.firma.net (/etc/httpd/conf.d/ssl.conf:56)
*:80                   dnsname.linux.firma.net (/etc/httpd/sites-enabled/000-default.conf:215)
ServerRoot: "/etc/httpd"  
Main DocumentRoot: "/var/www/html"  
Main ErrorLog: "/etc/httpd/logs/error_log"  
Mutex default: dir="/run/httpd/" mechanism=default   
Mutex mpm-accept: using_defaults
Mutex authdigest-opaque: using_defaults
Mutex proxy-balancer-shm: using_defaults
Mutex rewrite-map: using_defaults
Mutex authdigest-client: using_defaults
Mutex ssl-stapling: using_defaults
Mutex proxy: using_defaults
Mutex authn-socache: using_defaults
Mutex ssl-cache: using_defaults
PidFile: "/run/httpd/httpd.pid"  
Define: _RH_HAS_HTTPPROTOCOLOPTIONS
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="apache" id=48  
Group: name="apache" id=48  
Dani
Dani 22.08.2023 um 19:42:46 Uhr
Goto Top
Moin,
also meine Apache Konfigurationen sehen im Grunde immer so aus:
<VirtualHost *:80>
  ServerName cockpit.xx.yy.zz.de
  Redirect 301 / https://cockpit.xx.yy.zz.de/
</VirtualHost>

<VirtualHost *:443>
  ServerName cockpit.xx.yy.zz.de
  ServerAdmin email@address
  DocumentRoot "/home/users/zaco/www/"  
  SuexecUserGroup "zaco" "zaco"  
</VirtualHost>

<VirtualHost *:443>
  ServerName xx.yy.zz.de
  ServerAdmin email@address
  DocumentRoot "/home/users/idkc/www/production/selfoss/"  
  SuexecUserGroup "idkc" "idkc"  
...
</VirtualHost>
Mit diesem Schema müsstest du alle vHosts einmal umbauen und dann sollte dein Wildcard auch wieder funktionieren.


Gruß,
Dani
tooooooobi
tooooooobi 23.08.2023 um 15:43:18 Uhr
Goto Top
Und wenn Du eine Ausnahme einträgst (was ja mein eigentliches Problem ist), funktioniert es dann auch noch? Denn so wie Du es gemacht hast, hatte ich es ja vor meinem Problem auch und es ging alles...
LG
Dani
Dani 23.08.2023 um 22:13:36 Uhr
Goto Top
Moin,
Denn so wie Du es gemacht hast, hatte ich es ja vor meinem Problem auch und es ging alles...
wenn ich die Konfiguration aus deiner Frage anschaue, ist dem nicht so. Oder hast du das "nur" vergessen zu erwähnen?

Und wenn Du eine Ausnahme einträgst (was ja mein eigentliches Problem ist), funktioniert es dann auch noch?
Hab ich gerade keine Zeit, dass nachzustellen und zu testen. Daher bleibt das dir überlassen.


Gruß,
Dani