Rbenv works by adding a Bash startup script to /etc/profile.d/, which contains the code that sets up your $PATH and all the other niceties. This script (and all others in /etc/profile.d) is only loaded by Bash when Bash is invoked as a login shell, which is how you normally use Bash. However, the "nginx" process is launched as part of the init system. If the init system uses Bash at all (which is the case for System V scripts, but not systemd), then Bash isn't going to be invoked as a login shell, so those Rbenv files aren't going to read. Hence, the rbenv-vars code isn't going to be executed, and the environment variables aren't going to be set. Since passenger is spawned by nginx, it's not going to see those environment variables either.
The Passenger docs have a little more info on this:
https://www.phusionpassenger.com/docume ... _variablesTL;DR: Environment variables are confusing