При использовании директивы 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.