Hacker News new | past | comments | ask | show | jobs | submit login

For a variety of reasons I recently needed a reverse proxy(#1) and went with Apache 2.2 w/Google's mod_spdy. What are the advantages, if any (above and beyond that nginx has a lot of cred right now), of using nginx? In a prior build-out nginx didn't even support HTTP/1.1 on the inside side of the reverse proxy, while Apache 2.2 does.

#1 - We use it as a "least effort" geodistributed CDN. GeoDNS directs worldwide users (a small number of very high value users) to their local reverse proxy that has local caching of cacheable resources. Those proxies speak to the normal HTTP back-end servers through an SSH tunnel).




Nginx is widely regarded to be much more efficient than Apache, as it using non-blocking IO. I believe Nginx does support HTTP/1.1 now.


Apache can use event-driven non-blocking IO too, as well as the more traditional thread-per-connection mode.


Apache's event MPM is not really an event MPM. It's a slightly modified worker MPM. It puts all idle connections (keepalive state) and listeners in a single thread. Each active connection gets its own thread.

The event MPM also behaves the same as the worker MPM for SSL connections.

http://httpd.apache.org/docs/2.4/mod/event.html


This is incorrect for Apache 2.4: In 2.4 there is async write completion.

SSL behavior is still like the worker MPM, due to design issues in mod_ssl and filter stack. This is unlikely to change until 3.0.


In what sense is Apache 2.4.2's event mpm event-based when this is the result of siege -c 1000 http://hostname:port/sample.txt

  server-info selections
  MPM Name: event
  MPM Information: Max Daemons: 1 Threaded: yes Forked: yes

  server-status selections
  1550 requests/sec - 1.6 GB/second - 1.1 MB/request
  9 requests currently being processed, 41 idle workers

  W__W_____W_W_______R______W______W_______W__W_____..............
  ................................................................
  ......................
If those are asynchronous response writing handlers in the sense that they could be handled by an event loop, why do they have their own threads?


Personally I find nginx to be a lot nicer to work with than Apache when it comes to the configuration.


Agreed.

Not having to deal with Apache style rewrite rules alone is worth it. Had a scenario recently where I had to try to unwind about 50 of those rules (client site). Made my head hurt.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: