apache2 load-balancer mod_proxy/balancer ... .htaccess url rewrite
Antworten |
|
|
LinkBack | Themen-Optionen |
|
Neuer Benutzer
Beiträge: 11
Dabei seit: 27.05.2010
Ort: Bayern
Alter: 26
Geburtstag: 1984-05-01
|
Zitat Ich zitiere hier einen alten Forenbeitrag von 2007.Hallo Community, ich sitze an einem kleinen Problem das mich am Wochende verzweifeln liess. Ich habe einen kleinen cluster mit (zunächst) einem loadbalancer und drei backend Webservern aufgesetzt. Alle Server benutzen Apache 2.2.3 mit mod_proxy und mod_rewrite. Die Hostnamen sind: www.meinefirma.de (eingehende Anfragen, load balancer) web1.meinefirma.de web2.meinefirma.de web3.meinefirma.de Eingehende Anfragen an www.meinefirma.de werden auf die Backend-Server verteilt, und anhand eines Cookies über eine Sitzung hinweg gespeichert. Das klappt sehr gut. Es ist allerdings so, das ich für die URL zusätzlich einen rewrite benötige, und zwar in der Form: ^article/(.*)$ /products.php?article=$1 Wenn ich diese Regel als RewriteRule auf einem Backend-Server in die .htaccess eintrage, und den Backend-Server direkt anspreche (web1.meinefirma.de/article/123) dann klappt die Umleitung prima (er ruft dann intern web1.meinefirma.de/products.php?article=123). Rufe ich allerdings über den Proxy die Adresse auf (WWW.meinefirma.de/article/123), dann leitet der proxy die Anfrage 1:1 an den Backend-Server durch. Der Backend-Server schreibt die URL dann anhand der Regel um. Es klappt. Das Problem ist jedoch, das das entsprende von Apache gesetzte COOKIE verloren geht, und fortan alle Anfragen für einen Client verteilt über alle Backend-Server geschehen, statt den client per COOKIE auf einem einzigen Backend-Server zu binden. Da dies wohl problematisch ist, habe ich mir gedacht ob es nicht am Einfachsten wäre wenn ich direkt auf dem Proxy (WWW.meinefirma.de) die RewriteRule einbaue, so das die Anfragen an (www.meinefirma.de/article/123) noch auf dem proxy umgesetzt werden in www.meinefirma.de/products.php?article=123 und diese an einen Backend-Server übergeben wird in der Art (webX.meinefirma.de/products.php=?article=123) Für die Techies hier die derzeitigen Config-Einstellungen (die relevanten). Zunächst der Load Balancer: (/etc/apache2/sites-enables/000-default) <VirtualHost *> ServerName www.meinefirma.de DocumentRoot /var/www/www.meinefirma.de/data RewriteEngine On # RewriteRule ^panne/(.*)$ /pannen.php?panne=$1 ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass /balancer-manager ! # das geht nur mit dem kommenden apache2 2.2.5 :/ # ProxyPassMatch ^panne/(.*)$ balancer://mycluster/pannen.php?panne=$1 ProxyPass / balancer://mycluster/ stickysession=BALANCEID nofailover=On ProxyPassReverse / http://web1.meinefirma.de/ ProxyPassReverse / http://web2.meinefirma.de/ ProxyPassReverse / http://web3.meinefirma.de/ <Proxy balancer://mycluster> BalancerMember http://web1.meinefirma.de route=web1 BalancerMember http://web2.meinefirma.de route=web2 BalancerMember http://web3.meinefirma.de route=web3 ProxySet lbmethod=byrequests </Proxy> <Location /balancer-manager> SetHandler balancer-manager Order deny,allow Allow from all </Location> ErrorLog /var/www/www.meinefirma.de/logs/error.log LogLevel debug CustomLog /var/www/www.meinefirma.de/logs/access.log combined </VirtualHost> Und nun exemplarisch ein Backend-Server (webX.meinefirma.de): Die Config ist hier Standard (nimmt Anfragen für webX.meinefirma.de entgegen). Zusätzlich gibt es im Root des Webs ein .htaccess file mit folgendem Layout: RewriteEngine On RewriteRule ^article/(.*)$ /products.php?article=$1 Das ist es eigentlich. Ich denke das Beste wäre das .htaccess auf den Backend-Servern zu entfernen, und das Rewriting direkt auf dem Proxy durchzuführen. Nur ist mein Problem: Wo in der Proxy-Config führe ich das Rewrite durch, damit er es entsprechend weiterleitet? Bin für jeden Tipp mehr als Dankbar. viele viele Gruesse, Morian Ich habe genau das selbe Problem. Habe drei Webserver, einen Load-Balancer laufen. Die Daten aus /var/www/* sind von einem externen Fileserver gemountet also auf jedem Webserver identisch. In /var/www/ liegt eine .htaccess mir rewrite-Regeln für die Webpräsenz. Leider zeigt die Datei keinerlei Wirkung. Wäre super wenn mir jemand behilflich wäre :-) Grüße, mss
__________________
Systemintegration - Windows, Linux / Oracle, MySQL / Router, Cluster - VMware (ESX/i, vCenter, vMotion, HA, FT, ..) |
![]() |
| Lesezeichen |
| Stichworte |
| apache2, htaccess, loadbalancer, modproxy or balancer, rewrite, url |
| Themen-Optionen | |
|
|
|
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Kemp load balancer | LoneWolfJack | Dedizierter Server (Hardware) | 1 | 18.12.2009 12:43 |
| Lighttpd load balancer? | maebiore | Webserver (Software): Linux, Unix, etc. | 3 | 21.07.2009 16:40 |
| 3DNS Hardware Load Balancer | Elfchen | Von Privat An Privat | 0 | 01.02.2007 23:24 |
| Load bzw. Traffic Balancer | snuke | Script Serverseitig | 4 | 15.10.2006 15:42 |
| Php Load Balancer | Viziontele | Script Serverseitig | 8 | 12.06.2006 16:44 |