Acho que você deve alterar a raiz do local. De acordo com a documentação do Nginx, a diretiva raiz também possui o contexto "location":
syntax: root path;
context: http, server, location, if in location
Então você deve ser capaz de fazer algo como o seguinte:
server {
listen 80;
server_name apps.mydomain.com;
root /var/www/apps.mydomain.com/docs;
location / {
index index.html index.php;
}
location /app1 {
root /var/www/other_folder/public;
rewrite ^/app1/(.*)$ /$1 break;
index index.php index.html;
try_files $uri $uri/ /index.php$is_args$args /index.php?$query_string;
}
location ~ /app1/.+\.php$ {
root /var/www/other_folder/public;
rewrite ^/app1/(.*)$ /$1 break;
include /etc/nginx/fastcgi.conf;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
fastcgi_pass php;
# Database access parameters
fastcgi_param DB_HOST "localhost";
fastcgi_param DB_USER "apps";
fastcgi_param DB_PASS "xxxxxxxx";
fastcgi_param DB_NAME "app1";
}
# Other locations skipped
include /etc/nginx/global/php.conf; # other php scripts
}
Tanto quanto eu entendo, a diretiva de alias remapeia um URL para outro URL e o processamento continua, ele não define um diretório de onde os arquivos de origem. Não tenho certeza se você ainda precisa reescrever no local do PHP.