Как правильно настроить vsftpd на сервере Nginx + php-fpm?
ставьте права на файлы 640, на директории 750 
владельцем user1, группа www-data
При этом nginx должен запускаться от пользователя www-data, а php-fpm от пользователя user1. По Ftp заходите от пользователя user1.
user1 в группу www-data добавлять не нужно.
Если у Вас несколько сайтов, то для второго сайта владельцем ставите user2, группу www-data, по ftp подключаетесь от user2. 
Если сайтов несколько то для каждого настраивается свой пул php5-fpm, каждый из которых запускается от разных пользователей.
Результат: процессы php, а значит и WordPress будут иметь полный доступ к файлам только своего проекта и не будут иметь доступа к файлам соседних по VPS проектов. Nginx будет иметь доступ ко всем проектам только на чтение. По ftp каждый пользователь будет иметь полный доступ только к своим проектам. Лишние права доступа на файлы убраны. Если взломают один из сайтов VPS то хакер обычно получает права доступа того пользователя, от которого запущен пул php-fpm. (Взлом nginx маловероятен) Т.е. при взломе хакер получает полные права на один проект, но не может даже прочитать, а тем более записать в другой проект. Чтобы дополнительно обезопасить сервер, используйте chroot в настройках php5-fpm и ftp.  Это очень сильно повышает безопасность. Но настройка chroot в php5-fpm обычно требует дополнительных танцев с бубном (изменение конфигов других сервисов, которые перестают работать из-за изменения путей и т.п.).
Я раньше легкомыслено относился к настройкам безопасности, пока случайнр не нашел на своем VPS в двух проектах одинаковый шел-скрипт. После того, как я понял, что это за скрпит, я его запустил (просто в браузере набрал адрес соответствующий) и реально обалдел. Шел-скрипт позволял легко ходить по всем папкам проектов (отдельным сайтам), расположенным на VPS, позволял произвольно записывать и удалять файлы в этих проектах, позволял заходить в корень файловой структуры, например в папку /etc  и читать все конфиги в этой папке . Хоть конфиги были с доступом только  на чтение, реально в них хранится куча конфиденциальной информации. Например, некоторые пароли стандартные сервисы в таких конфигах хранят в незашифрованном виде. Скрипт позволял выводить список запущенных процессов и произвольно убивать процессы, запущенные от того же пользователя и т.п. Кроме этого все основные способы, необходимые для поиска уязвимых мест и дельнейшего вредительства в скрипте автоматизированы. Т.е. через этот шел-скрипт во  многих случаях  мне было удобнее работать с сервером, чем через putty и winscp. И в дальнейшем  этот шел-скрпит я использовал для тестирования безопасности каждого проекта. Т.е. кроме решения локальной задачи, я Вам рекомендую сразу в комплексе безопасность проверить.
Можно заменить на proftpd.
Там можно создать виртуальных пользователей и переопределить им uid\gid на реальных (например www-data). Получится что у них будут такие же права как у nginx.
Настраивается это очень легко парой строчек в стандартном конфиге.