Ich versuche derzeit, 3 Anwendungen aus einem Repository in 3 zu unterteilen, behalte jedoch die URL-Struktur bei, sodass grundsätzlich verschiedene Speicherorte unter derselben Domain von verschiedenen Anwendungen bereitgestellt werden müssen.
Ich habe Probleme damit, dass eine der Apps der Fallback für nicht vorhandene URLs sein muss. Wenn die erste nicht übereinstimmt und die zweite nicht, sollte die dritte die Anfrage bearbeiten
Die Struktur, die ich habe, ist:
/ etc / nginx / sites-enabled / main_site, hier, abgesehen von Servername und Protokollen, habe include /etc/nginx/subsites-enabled/*ich 3 Konfigurationsdateien, eine für jede der Apps.
Jede der 3 Konfigurationsdateien enthält einen Standortblock.
Ich habe einen negativen Lookahead in Regex versucht (im Grunde genommen habe ich versucht, die URLs, mit denen die anderen Apps umgehen, fest zu codieren), bin aber gescheitert.
Also, um zusammenzufassen:
/ und / community sollten von /etc/nginx/subsites-enabled/example.org/home geliefert werden (ein paar Perl-Skripte)
/ news sollte von /etc/nginx/subsites-enabled/example.org/news (wordpress) geliefert werden
alles andere sollte von /etc/nginx/subsites-enabled/example.org/app (Kuchen-App) geliefert werden
Das Perl-Bit funktioniert gut. Das Problem, das ich habe, ist, dass die App Nachrichten übernimmt (wahrscheinlich, weil sie passt. *), Ich habe verschiedene Optionen ausprobiert (ich bin seit 2 Tagen dabei), aber keine von ihnen hat alle Probleme gelöst (manchmal) statische Assets würden nicht funktionieren, etc).
Meine Konfiguration ist:
/etc/nginx/sites-enabled/example.org:
server {
listen 80;
server_name example.org;
error_log /var/log/nginx/example.org.log;
include /etc/nginx/subsites-enabled/example.org/*;
}
/etc/nginx/subsites-enabled/example.org/home:
location = / {
rewrite ^.*$ /index.pl last;
}
location ~* /community(.*) {
rewrite ^.*$ /index.pl last;
}
location ~ \.pl {
root /var/www/vhosts/home;
access_log /var/log/nginx/home/access.log;
error_log /var/log/nginx/home/error.log;
include /etc/nginx/fastcgi_params;
fastcgi_index index.pl;
fastcgi_param SCRIPT_FILENAME /var/www/vhosts/home$fastcgi_script_name;
fastcgi_pass unix:/var/run/fcgiwrap.socket;
}
/ etc / ngins / subsites-enabled / news
location /news {
access_log /var/log/nginx/news/access.log;
error_log /var/log/nginx/news/error.log debug;
error_page 404 = /news/index.php;
root /var/www/vhosts/news;
index index.php;
if (!-e $request_filename) {
rewrite ^.*$ /index.php last;
}
location ~ \.php {
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/vhosts/news$fastcgi_script_name;
}
}
/ etc / nginx / subsites-enabled / app:
location ~ .* {
access_log /var/log/nginx/app/access.log;
error_log /var/log/nginx/app/error.log;
rewrite_log on;
index index.php;
root /var/www/vhosts/app/app/webroot;
if (-f $request_filename) {
expires 30d;
break;
}
if (!-e $request_filename) {
rewrite ^.*$ /index.php last;
}
location ~ \.php {
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/vhosts/app/app/webroot$fastcgi_script_name;
}
}
location ^~ /news. b) Für Ihren App-Block sollten Sie in der Lage sein, dies zu tun location /(dies ist nicht dasselbe wie location = /, sollte aber mit allem übereinstimmen, was noch nicht übereinstimmt. c) In einigen Fällen (insbesondere bei regulären Ausdrücken) spielt die Reihenfolge eine Rolle. Möglicherweise möchten Sie die 3 kombinieren Dateien in eine einzelne Datei mit den Blöcken in der richtigen Reihenfolge. Verwenden Sie stattdessen auch try_files !-e. Siehe schließlich wiki.nginx.org/HttpCoreModule#location .
@Präfix), der Ihrer Standard-App zugeordnet ist. Sie können auch eine error_page einrichten, die einen 404 einem benannten Ort zuordnet.