3 ms·
Nginx is a well-engineered piece of software. The only problem, in my opinion, is that does not support loadable modules; any features you want or don't want ne
by lobster_johnson 15y ago
Nginx is a well-engineered piece of software. The only problem, in my opinion, is that does not support loadable modules; any features you want or don't want need to be configured at compile-time, and those are only the official ones that are part of the mainline code. Third-party "modules" such as Phusion Passenger are essentially patches. Since Nginx has a modular architecture, those patches are admittedly very clean, but it's still a pretty ugly situation compared to Apache's elegant loadable module system.
- hackermom 15y agoI'd like to see DSO support for nginx as well. The lack of this feature is the reason I still haven't moved from Apache.
- justincormack 15y agoIt works if you have a package management system like gentoo, that compiles from source, or the BSDs, just not most Linux distros.
- rcoder 15y agoFor a base web server included in OpenBSD by default, I don't think dynamic loading is actually a huge win. Auditing and hardening a single, statically-compiled binary is easier than doing the same thing for one that loads shared objects at runtime. Since adding and removing Apache modules already requires a restart of the httpd process, a good source-based build system like ports can make adding and removing modules via build flags nearly as straightforward as dynamic loading.
- lobster_johnson 15y agoNot for OpenBSD, maybe, but for other operating systems based on precompiled binary packages. Nginx uses a forked worker model that probably would allow adding/removing modules without restarting the entire server.
- mfjordvald 15y agoConsidering that you can upgrade the binary without any downtime then yeah, it probably would. I personally think there are bigger issues that needs to be covered first, such as support for persistent connections to backends and HTTP/1.1 support when reverse proxying. (Was just added in 1.1.4, now it just needs testing!)