Eu encontrei uma solução, depois de usar a configuração de exemplo no link como base. Esta solução também sugere (como oposto a muitos outros exemplos) manter a configuração cgi.fix_pathinfo em php.ini para 1.
Em vez de optar por uma solução user_dir completa, optei por uma solução codificada, porque não sei (ainda) como fazer com que a variável $ userdir_user funcione dentro de um regex subseqüente.
A segunda coisa a procurar é a correção para o fastcgi_split_path_info. A razão é que, de outra forma, a parte ~ user é traduzida no caminho dado ao PHP.
server {
index index.php index.html index.htm;
location ~ ^/~user(?<userdir_uri>/.*)?$ {
alias /home/user/public_html$userdir_uri;
#autoindex on;
#If this doesn't work, set cgi.fix_pathinfo=1 in /etc/php5/fpm/php.ini
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^/~user/(.+?\.php)(/.*)$;
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
}
}
}