I have googled it, but can’t understood, i think they are as same as the CGI in aspect of functional.
The passenger only for apache web server, the rack for every web server that supports the rack, isn’t it.
Thanks for the helps to solve my confusion.
Try this idea on.
1. Rack is a framework for building HTTP-aware applications in Ruby.
2. Rails is a Rack app, so is Sinatra.
3. Passenger is a module for Apache or Nginx that serves a Rack app alongside other HTTP assets.
There are other ways to serve a Rack app, including CGI, FastCGI, Lighty, Thin, Unicorn, etc. Passenger is very easy to configure and use within an existing Apache server (the sort you're reasonably likely to see in a commodity hosting setup), and fairly fast, so it gets a lot of usage.
Good explanation. Thanks Walter.