expertenaustausch > comm.software.* > comm.software.webserver

Magnus Warker (02.03.2012, 11:35)
Hallo,

ich habe hinter meinem Domain-Namen "mydomain" (fiktiv) eine
Tomcat-Anwendung mit dem Namen "app".

Davor befindet sich ein Apache-Server, der die Verbindung zur Anwendung
über einen Proxy weiterleitet:

ProxyPass /app ajp://localhost:8009/app
ProxyPassReverse /app ajp://localhost:8009/app

Die Anwendung ist somit erreichbar unter "http://mydomain/app".

Damit man das Unterverzeichnis "app" nicht angeben muss, habe ich eine
Weiterleitung eingerichtet:

Redirect permanent / /app/

Die Anwendung ist somit erreichbar unter "http://mydomain".
Soweit so gut.

Nun möchte ich eine Ausnahme dazu haben, so dass etwa das Verzeichnis
"/foo" nicht umgeleitet wird und "normal" im Dateisystem liegt:

<Location /foo>
AuthType None
</Location>

Dieses Verzeichnis sollte also unter "http://mydomain/foo" erreichbar
sein und auf das gleichnamige Verzeichnis unter DocumentRoot verweisen.

Der Zugriff auf "http://mydomain/foo" wird jedoch umgeleitet auf
"http://mydomain/app/foo", was zu einer Tomcat-Fehlermeldung führt.

Wie kann ich das lösen?
Wie kann ich erreichen, dass "/foo" so erreichbar ist, als gäbe es keine
Weiterleitung?

Danke!
Magnus
Wilhelm Greiner (02.03.2012, 12:06)
Hi,
* Magnus Warker <warker> schrieb:
> ProxyPass /app ajp://localhost:8009/app
> ProxyPassReverse /app ajp://localhost:8009/app


Einfach ein "!" hintendran machen

ProxyPass /foo !

Glaub es wird first match abgearbeitet, also vor dem anderen Eintrag.

Wilhelm
Magnus Warker (02.03.2012, 12:12)
On 03/02/2012 11:06 AM, Wilhelm Greiner wrote:
> Hi,
> * Magnus Warker<warker> schrieb:
>> ProxyPass /app ajp://localhost:8009/app
>> ProxyPassReverse /app ajp://localhost:8009/app

> Einfach ein "!" hintendran machen
> ProxyPass /foo !


> Glaub es wird first match abgearbeitet, also vor dem anderen Eintrag.


Danke, schon probiert, aber ohne Erfolg.

Die ProxyPass-Direktive kann ich damit aushebeln, aber wohl nicht die
Redirect-Direktive...

Habe auch schon das "ProxyPass /foo !" vor die Redirect-Anweisung
verschoben, aber es wird immer das "app" eingefügt...

Magnus
Sven Hartge (02.03.2012, 15:52)
Magnus Warker <warker> wrote:
> On 03/02/2012 11:06 AM, Wilhelm Greiner wrote:
>> * Magnus Warker<warker> schrieb:


>>> ProxyPass /app ajp://localhost:8009/app
>>> ProxyPassReverse /app ajp://localhost:8009/app

>> Einfach ein "!" hintendran machen
>> ProxyPass /foo !


>> Glaub es wird first match abgearbeitet, also vor dem anderen Eintrag.


> Danke, schon probiert, aber ohne Erfolg.


> Die ProxyPass-Direktive kann ich damit aushebeln, aber wohl nicht die
> Redirect-Direktive...


> Habe auch schon das "ProxyPass /foo !" vor die Redirect-Anweisung
> verschoben, aber es wird immer das "app" eingefügt...


Warum machst du nicht

ProxyPass /foo !
ProxyPass / ajp://localhost:8009/app
ProxyPassReverse / ajp://localhost:8009/app

Dann brauchst du den Redirect auch nicht.

Magnus Warker (05.03.2012, 07:46)
On 03/02/2012 02:52 PM, Sven Hartge wrote:

> Warum machst du nicht
> ProxyPass /foo !
> ProxyPass / ajp://localhost:8009/app
> ProxyPassReverse / ajp://localhost:8009/app


Ich habe es ausprobiert und erhalte im Browser die Fehlermeldung:

HTTP Status 404 - /appapp/
The requested resource (/appapp/) is not available.

Das Kürzel "app" wird aus irgendwelchen Gründen zweimal angefügt.
(Der Redicect ist auskommentiert.)

Die URL im Browser wird nach wie vor in ".../app" geändert.

Magnus
Magnus Warker (05.03.2012, 11:15)
Hier meine Konfiguration (mydomain ist fiktiv):
(Könnte das Problem mit dem "Location /app" zu tun haben?)

# NameVirtualHost *

<VirtualHost *:80>
ServerName
ServerAlias mydomain.de
ServerAdmin webmaster@localhost

DocumentRoot /home/www/web/mydomain/pub/

<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>

<Directory /home/www/web/mydomain/pub/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

ErrorLog /var/log/apache2/error.log

LogLevel warn
CustomLog /var/log/apache2/access.log combined
ServerSignature On

Alias /doc/ "/usr/share/doc/"

<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

<Location /app>
AuthType Basic
AuthName "Restricted"
AuthBasicProvider file
AuthUserFile /home/www/web/mydomain/pwd/www.pwd
Require valid-user
</Location>

#RedirectX permanent / /app/

# proxy

<Proxy *>
AddDefaultCharset Off
Order deny,allow
Allow from all
</Proxy>

ProxyPass /foo !

ProxyPass / ajp://localhost:8009/app
ProxyPassReverse / ajp://localhost:8009/app

</VirtualHost>
Helmut Schneider (05.03.2012, 23:52)
Magnus Warker wrote:

> On 03/02/2012 02:52 PM, Sven Hartge wrote:
> Ich habe es ausprobiert und erhalte im Browser die Fehlermeldung:
> HTTP Status 404 - appapp
> The requested resource (/appapp/) is not available.
> Das Kürzel "app" wird aus irgendwelchen Gründen zweimal angefügt.
> (Der Redicect ist auskommentiert.)
> Die URL im Browser wird nach wie vor in ".../app" geändert.


Du hast in der context.xml /app als docBase angegeben (IIRC, Tomcat und
ich sind auf dem Kriegspfad), daher hängt Tomcat /app an. Ändere das,
oder benutze mod_rewrite.
Magnus Warker (06.03.2012, 14:35)
On 03/05/2012 10:52 PM, Helmut Schneider wrote:

> Du hast in der context.xml /app als docBase angegeben (IIRC, Tomcat und
> ich sind auf dem Kriegspfad), daher hängt Tomcat /app an. Ändere das,
> oder benutze mod_rewrite.


Danke, das erklärt einiges!

Hättest Du noch einen Tipp. wie ich das mit Apache-Mitteln (mod_rewrite)
schnell ändern kann?

(Die Tomcat-Konfiguration zu ändern ist für mich schwieriger, zumal
docBase ja vermutlich auch nicht ganz leer sein darf).

Danke,
Magnus
Helmut Schneider (07.03.2012, 21:45)
Magnus Warker wrote:

> On 03/05/2012 10:52 PM, Helmut Schneider wrote:
> Danke, das erklärt einiges!
> Hättest Du noch einen Tipp. wie ich das mit Apache-Mitteln
> (mod_rewrite) schnell ändern kann?


Komm, Du willst 1x '/app' aus der URL löschen, das bekommst Du hin. Tip:

RewriteEngine on
RewriteRule ^old\.html$ new.html

> (Die Tomcat-Konfiguration zu ändern ist für mich schwieriger, zumal
> docBase ja vermutlich auch nicht ganz leer sein darf).


Lies das Handbuch. docBase kann auch leer sein.
Ähnliche Themen