При использовании директивы alias
в переменной $document_root
отражается значение alias. В данном случае - это полный путь файла, так как директива alias
используется в location'е, заданном регулярным выражением.
При этом переменная $fastcgi_script_name формируется из URI запроса на основании fastcgi_split_path_info
.
Соответственно при использовании директивы alias
- использовать $document_root$fastcgi_script_name
в качестве SCRIPT_FILENAME нельзя. Следует задать SCRIPT_FILENAME явно, либо использовать переменную $request_filename
.
Что до использования $fastcgi_script_name
в try_files
(что вообще-то неправильно, так как использование try_files
меняет URI запроса и соответственно $fastcgi_script_name
, подробности в тикете #321), то оно тут не будет работать, равно как и try_files $uri ...
, так как используется location, заданный регулярным выражением, и в этом случае ведёт себя специально не только директива alias
(которая ожидает полный путь к файлу), но и директива try_files
- она ожидает "дополнение" к URI запроса. О том, что такое поведение плохо и нелогично - см. в тикете #97.
Отмечу также, что в общем и целом кажется, что в обсуждаемом конфиге нет никакого смысла пытаться героически побеждать все эти сложности. Куда проще будет сделать обычный префиксный location /wordpress/, в котором задать префиксный же alias:
location /wordpress/ {
alias /var/www/123/;
location ~ \.php$ {
try_files $uri ...
fastcgi_pass ...
fastcgi_param SCRIPT_FILENAME $request_filename;
inclue fastcgi_param;
}
}
В таком виде try_files
будет работать ожидаемо из коробки, останется лишь задать SCRIPT_FILENAME.