Moe
1
Ich habe folgendes Problem: Zur Zeit läuft bei uns eine Webapp auf Zend-Basis auf einem Apache-Webserver. Da Apache jetzt nicht der schnellste Server ist, wenn es an parallele PHP-lastige Anfragen geht wollte ich gerne mal auf einem System zu Vergleichszwecken einen nginx-Server installieren. Die App läuft dabei in einem Unterverzeichnis der eigentlichen Hauptapp:
htdocs -> Hauptapp -> ZendApp
Nun ist es so, dass die "normale" Struktur einer ZendApp vorsieht, dass der Index einer ZendApp eben nicht um "Hauptverzeichnis" (also unter -> ZendApp) sondern in einem Verzeichnis "public" unterhalb des Hauptverzeichnisses liegt:
htdocs -> Hauptapp -> ZendApp -> public -> index.php
Alles was unter "public" wird durch die ZendApp auf das Hauptverzeichnis gemappt (wie z.B. die index.php).
Request: http://meinserver/ZendApp/Modul/index
geht zur index.php im public-Verzeichnis und wird dort dann als Verkettung im Hauptverzeichnis angezeigt. Der Benutzer selbst merkt eigentlich nicht, dass er über das public-Verzeichnis geleitet wird.
Unter Apache geht das mit zwei relativen schlichten .htaccess-Dateien:
htdocs -> Hauptapp -> ZendApp/.htaccess
htdocs -> Hauptapp -> ZendApp -> public/.htaccess
Meine Frage ist jetzt, wie ich das geschickt in Rewrite-Regeln auf nginx umwandele. Ich beiße mir da seit zwei Tagen die Zähne dran aus. Der erste Rewrite ist ja ungefähr genauso simpel wie bei Apache:
Beim zweiten Schnipsel versagen allerdings meine Zellen gerade.
Es soll im Endeffekt erreicht werden, dass statt der index.php in ZendApp die index.php in public/ verwendet wird. Anschließend sieht die Url-Struktur so aus:
http://meinserver/ZendApp/Modul/Action
also z.B.
http://meinserver/ZendApp/lager/auflisten
Kann mir jemand helfen oder mir vielleicht einen Kontakt zu jemanden vermitteln, der sich damit auskennt? Die nginx-Foren/Mailingliste gab bis jetzt nicht wirklich viel her ..
htdocs -> Hauptapp -> ZendApp
Nun ist es so, dass die "normale" Struktur einer ZendApp vorsieht, dass der Index einer ZendApp eben nicht um "Hauptverzeichnis" (also unter -> ZendApp) sondern in einem Verzeichnis "public" unterhalb des Hauptverzeichnisses liegt:
htdocs -> Hauptapp -> ZendApp -> public -> index.php
Alles was unter "public" wird durch die ZendApp auf das Hauptverzeichnis gemappt (wie z.B. die index.php).
Request: http://meinserver/ZendApp/Modul/index
geht zur index.php im public-Verzeichnis und wird dort dann als Verkettung im Hauptverzeichnis angezeigt. Der Benutzer selbst merkt eigentlich nicht, dass er über das public-Verzeichnis geleitet wird.
Unter Apache geht das mit zwei relativen schlichten .htaccess-Dateien:
htdocs -> Hauptapp -> ZendApp/.htaccess
Code:
RewriteEngine on
RewriteRule (.*) ./public/$1
htdocs -> Hauptapp -> ZendApp -> public/.htaccess
Code:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ /ZendApp/index.php [NC,L]
Meine Frage ist jetzt, wie ich das geschickt in Rewrite-Regeln auf nginx umwandele. Ich beiße mir da seit zwei Tagen die Zähne dran aus. Der erste Rewrite ist ja ungefähr genauso simpel wie bei Apache:
Code:
# Leite alle Requests nach public/ um
location /ZendApp/ {
rewrite /(.*) /ZendApp/public/$1;
}
Beim zweiten Schnipsel versagen allerdings meine Zellen gerade.
Es soll im Endeffekt erreicht werden, dass statt der index.php in ZendApp die index.php in public/ verwendet wird. Anschließend sieht die Url-Struktur so aus:
http://meinserver/ZendApp/Modul/Action
also z.B.
http://meinserver/ZendApp/lager/auflisten
Kann mir jemand helfen oder mir vielleicht einen Kontakt zu jemanden vermitteln, der sich damit auskennt? Die nginx-Foren/Mailingliste gab bis jetzt nicht wirklich viel her ..