Actualmente estoy tratando de separar 3 aplicaciones de un repositorio en 3, pero manteniendo la estructura de la url, por lo que, básicamente, diferentes aplicaciones bajo el mismo dominio tienen que ser entregadas por diferentes aplicaciones.
Con lo que estoy luchando es que una de las aplicaciones debe ser la alternativa para las URL inexistentes, por lo que si la primera no coincide y la segunda no, entonces la tercera debe manejar la solicitud
La estructura que tengo es:
/ etc / nginx / sites-enabled / main_site, aquí, aparte del nombre_servidor y los registros que tengo include /etc/nginx/subsites-enabled/*, donde tengo 3 archivos de configuración, uno para cada una de las aplicaciones.
Cada uno de los 3 archivos de configuración contiene un bloque de ubicación.
He intentado con anticipación negativa en expresiones regulares (básicamente tratando de codificar las URL que manejan las otras aplicaciones) pero fallé.
Entonces, para resumir:
/ y / community deben ser entregados por /etc/nginx/subsites-enabled/example.org/home (algunos scripts en perl)
/ news debe ser entregado por /etc/nginx/subsites-enabled/example.org/news (wordpress)
todo lo demás debe ser entregado por /etc/nginx/subsites-enabled/example.org/app (aplicación de pastel)
El bit perl funciona bien. El problema que tengo es que la aplicación se está haciendo cargo de las noticias (probablemente porque coincide. *), He probado varias opciones (he estado en esto durante 2 días) pero ninguna de ellas resolvió todos los problemas (a veces los activos estáticos no funcionarían, etc.).
Mi configuracion es:
/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) para el bloqueo de su aplicación, debería poder hacer location /(esto no es lo mismo que location = /, pero debería coincidir con todo lo que no coincide). c) en algunos casos (particularmente expresiones regulares), el orden sí importa; puede combinar los 3 archivos en un solo archivo con los bloques en el orden correcto. Además, use try_files en lugar de !-e. Finalmente vea wiki.nginx.org/HttpCoreModule#location .
@prefijo) que se asigna a su aplicación predeterminada. También puede configurar un error_page que asigna un 404 a una ubicación con nombre.