ngx相对node有这么几个较大的优点:
1.性能更高,毕竟C写的,而且ngx的epoll是裸的,node的epoll是libuv封装的。
2.完备的静态资源支持……这个就不说了,你用node写一个和ngx工作完全一致的静态资源库试试……当然npm上有现成的库,但是ngx比那个库做得还要好,而且ngx的https, h2和server push配置也是挺简单的。
3.ngx做proxy pass和auth request就是几行配置的事,而且处理流程,尤其是错误处理更完备,node你自己不去写错误处理,随便一个没捕获的异常服务器挂了,只留下屁股后面一大片upstream被水淹没,不知所措(我不信你node后面没有upstream的)。
4.ngx有njs,不过模块要自己装。
5.ngx的扩展也可以通过写C模块的方式来,而且只需要和ngx打交道,不需要和v8打交道。
node的优点:
1.灵活,ngx有许多单纯通过配置干不了的。
2.v8,在node和njs之间选择那还是要选node的。
3.其实ngx的模块并不好写……
其实最好的做法是,动静分离,ngx做入口,node做ngx的upstream……