I downloaded and extracted the nginx source to ~/nginx-1.0.11, then downloaded PCRE 8.20 directly since the latest version of the Passenger installer can't download it automatically. I did the typical ./configure, make, sudo make install for PCRE which put it in /usr/local/lib by default. So far so good. Using passenger-install-nginx-module and specifying the source directory as /home/username/nginx-1.0.11 worked just fine.
When I ran a syntax check with /opt/nginx/sbin/nginx -t I was informed that libpcre.so.0 could not be located. I ran ldd against nginx and got the following:
linux-vdso.so.1 => (0x00007fff1dd7b000) libpthread.so.0 => /lib/libpthread.so.0 (0x00007fbfcde57000) libcrypt.so.1 => /lib/libcrypt.so.1 (0x00007fbfcdc1e000) libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007fbfcd909000) libm.so.6 => /lib/libm.so.6 (0x00007fbfcd686000) libpcre.so.0 => not found (truncated after this line)
Since nginx was able to find files in /usr/lib I recompiled PCRE with ./configure --prefix=/usr and now everything works great. My question is whether there's a smarter way to do this. Could I keep PCRE installed in the default /usr/local location and somehow tell the system or nginx to look in the lib directories there? Libraries are still a bit of a mystery to me.