I realize thread driven that Apache uses: every connection reveals a thread so when the fact is sent, the thread is closed, delivering the assets for other threads).
However I do not get the big event driven design that Nginx uses. I have read some fundamentals about event driven design .. however i do not understand how this really is utilized by nginx to deal with web demands.
How can i read and know how Nginx is handling the connections within an event driven way and so i get why it's better, instead of just accepting that event-based design is preferable to thread-driven design.
Nginx uses the Reactor pattern. Essentially, it's single-threaded (but could fork several ways to utilize multiple cores). The primary event loop waits for that OS to signal a readiness event - e.g. that information is open to read from the socket, after which it's read right into a buffer and processed. The only thread can very effectively serve hundreds of 1000's of synchronised connections (the thread-per-connection model would fail only at that due to the large context-switching overhead, along with the large memory consumption, as each thread needs its very own stack).