ミドルウェアとは
サーバとアプリケーションの中間に位置し,Webサーバからのリクエストに対する処理と,アプリケーションからのレスポンスに対する処理を行う。
OS上で動作し、アプリケーションソフトに対してOSよりも高度で具体的な機能を提供するソフトウェア。OSとアプリケーションソフトの中間的な性格を持っている。

上図では,WebサーバとWSGIアプリケーションの間にミドルウェアの層が幾つも重なっています。
ミドルウェアは,それ自身がWSGIアプリケーションのように振る舞うため,「ミドルウェアが呼び出したアプリケーションがミドルウェアで,そのミドルウェアが呼び出したアプリケーションがまたミドルウェアで…」と最終的にWSGIアプリケーションが呼び出されるまで続きます。
このミドルウェアの連鎖をミドルウェアスタックといいます。
補足1
ミドルウェアとは、OSと各種システム固有の処理を行うアプリケーションソフトウェアとの間に入り、
アプリケーションが要求する様々な処理の代換えとOSへ依頼する各種手順・手続きを行う中間的なソフトウェアのこと。
アプリケーションプログラムが動作するにあたり、ネットワーク上のサーバやデータベースとのやり取りなど、面倒な手続きを要するものがある。
これらとのやり取りの手順や管理をその種別単位にまとめ、ひとつの機能管理パッケージソフトウェアとしてまとめたものがミドルウェアである。
補足2
OS上で動作し、アプリケーションソフトに対してOSよりも高度で具体的な機能を提供するソフトウェア。OSとアプリケーションソフトの中間的な性格を持っている。
多くのアプリケーションソフトで共通して利用される機能は、個別に開発するのは非効率であるため、通常はOSの機能として提供され、アプリケーションソフトはOSの機能を利用するだけですむようになっている。
だが、このようにしてOSに実装される機能はどんなアプリケーションソフトでも必ず必要とされるような極めて基本的なものに限られる。
このため、特定の分野でしか使われないが、その分野では必ず必要とされるような具体的で基本的な機能は、ミドルウェアの形で提供されることが多い。
また、ミドルウェアにはOSやハードウェアによる違いを吸収し、様々なプラットフォームで動作するアプリケーションソフトの開発を容易にするというメリットがある。