Attualmente sto cercando di dividere 3 applicazioni da un repository in 3, ma mantenendo la struttura dell'URL, quindi sostanzialmente posizioni diverse nello stesso dominio devono essere consegnate da applicazioni diverse.
Quello con cui sto lottando è che una delle app deve essere il fallback per gli URL inesistenti, quindi se la prima non corrisponde e la seconda no, la terza dovrebbe gestire la richiesta
La struttura che ho è:
/ etc / nginx / sites-enabled / main_site, qui, a parte server_name e i log che ho include /etc/nginx/subsites-enabled/*
, dove ho 3 file di configurazione, uno per ciascuna delle app.
Ognuno dei 3 file di configurazione contiene un blocco di posizione.
Ho provato lookahead negativo in regex (fondamentalmente cercando di codificare gli URL gestiti dalle altre app) ma non ci sono riuscito.
Quindi, per riassumere:
/ e / community dovrebbero essere forniti da /etc/nginx/subsites-enabled/example.org/home (alcuni script perl)
/ le notizie dovrebbero essere fornite da /etc/nginx/subsites-enabled/example.org/news (wordpress)
tutto il resto dovrebbe essere consegnato da /etc/nginx/subsites-enabled/example.org/app (app per torte)
Il bit perl funziona bene. Il problema che sto riscontrando è che l'app sta rilevando le notizie (probabilmente perché corrisponde. *), Ho provato varie opzioni (ci sono stato per 2 giorni) ma nessuno di loro ha risolto tutti i problemi (a volte le risorse statiche non funzionerebbero, ecc.).
La mia configurazione è:
/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 / siti secondari abilitati / notizie
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 / siti secondari abilitati / 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) per il tuo blocco app, dovresti essere in grado di fare location /
(questo non è lo stesso di location = /
, ma dovrebbe corrispondere a tutto ciò che non è già abbinato. c) in alcuni casi (in particolare regex), l'ordine è importante - potresti voler combinare il 3 file in un singolo file con i blocchi nell'ordine giusto. Inoltre, utilizzare try_files anziché !-e
. Infine, vedi wiki.nginx.org/HttpCoreModule#location .
@
prefisso) che si associa alla tua app predefinita. Puoi anche impostare una pagina_errore che associa un 404 a una posizione denominata.