nginx is asynchronous, or event-driven. Apache is process-based. Here's an analogy. Like most analogies, it is imperfect:
Imagine a clothing store that assigns a personal shopping assistant to you at the door. This is the only way you can shop at this store. They greet you, show you merchandise, help you try things on, and help you check out, and then bid you farewell. Every simultaneous customer takes up one personal shopper. The store only has a set number of personal shoppers available. If none are available, new customers have to wait.
Now imagine a clothing store that is event-based. When you arrive at the door, you are greeted. When you need to try something on, you are given access to a changing room. When you need to pay for your purchases, a cashier services you.
In the event-driven model, resources aren't just hanging around watching you try on c