Я бы изменил корневой каталог вместо использования псевдонима в местоположении. Это может выглядеть так:
listen 8083; server_name sid0.local; index index.php index.html; # Here is magic set $root_dir /data/www/sid0.local; rewrite ^(/~[^/]+)$ $1/ redirect; rewrite ^/~(?<user>[^/]+)(.+) $2; if ($user) { set $root_dir /home/$user/www; } root $root_dir; # PHP-FPM location ~ \.php$ { try_files $uri =404; include fastcgi_params; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; }
Еще одна версия без переписывания:
listen 8083; server_name sid0.local; index index.php index.html; root /data/www/sid0.local; location ~ ^/~(?<user>[\w-]+)(?<path>/.*)$ { alias /home/lynn/tmp/site/$user/www$path; autoindex on; # PHP-FPM location ~ \.php$ { try_files $uri =404; include fastcgi_params; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; } }
По какой-то причине alias
работают именованные захваты, а с числовыми ссылками - нет. Я предполагаю, что числовые ссылки очищаются как-то во вложенном месте.