TL; DR
If it's just pm2 vs. nginx for nginx. Better : both. Best : Even broader customization.
If you want the most mature load balancing features to use HAProxy . It does one thing better . You will get an SSL termination, ACL, and it will be very easy. I can't prove it with numbers, but I feel that it has the smallest hit on HTTP requests. Good reading of this .
If you also need to serve (at least some) static content, your goto nginx option for its excellent features in this field. Also from your list, this is the only one who will provide such an opportunity. Except for node itself, but doing it is very bad.
pm2 feels very heavy IMO and tends to break more often. The process load balancing capabilities are very good and keep your node process running smoothly. It abstracts cluster .
cluster feels "fixed" to a minimum. In the past, and possibly os-level support has led to different behaviors on different platforms. For example, bias to individual processes.
My current setup:
HAProxy for cluster load balancing, including balancing multiple process instances per machine.- CDN for static content (e.g. Cloudinary )
pm2 for process load balancing
eljefedelrodeodeljefe
source share