On Linux, nginx can use the TCP_CORK socket option. From the tcp(7) manual:
- If set, don't send out partial frames. All queued partial frames are sent when the option is cleared again. This is useful for prepending headers before calling sendfile(2), or for throughput optimization. As currently implemented, there is a 200 millisecond ceiling on the time for which output is corked by TCP_CORK. If this ceiling is reached, then queued data is automatically transmitted. This option can be combined with TCP_NODELAY only since Linux 2.5.71. This option should not be used in code intended to be portable.
On FreeBSD nginx can use the TCP_NOPUSH socket option, which enables T/TCP transactions. This does much the same as the above, but is known to be slow and somewhat buggy on many versions of FreeBSD.