Existem vários problemas com o seu arquivo de configuração.
O modificador ^~
é para locais de prefixo e não para locais de regex (apesar da presença de um til). Consulte este documento para obter detalhes.
Para fornecer uma precedência de localização regex sobre outro local regex, ele simplesmente precisa aparecer primeiro.
O bloco de localização precisa estar completo. nginx
não pegará bits de um local e mesclará com bits de outro.
Por exemplo, isso pode funcionar para você:
location ~ ^/calendar/.+\.php$ {
access_log /usr/local/nginx/logs/calendar.log;
try_files $uri =404;
include fastcgi.conf;
fastcgi_pass 127.0.0.1:8080;
}
location ~ \.php$ {
try_files $uri =404;
include fastcgi.conf;
fastcgi_pass 127.0.0.1:8080;
}