Open source and easy to use web server
Mongoose web server executable is self-sufficient, it does not depend on anything to start serving requests. If it is copied to any directory and executed, it starts to serve that directory on port 8080 (so to access files, go to http://localhost:8080).
If some additional config is required - for example, different listening port or IP-based access control, then a mongoose.conf file with respective options (see example) can be created in the same directory where executable lives.
This makes Mongoose perfect for all sorts of demos, file sharing, quick tests, and Web programming.
- Support for CGI, SSL, SSI, Digest (MD5) authorization, Websocket, WEbDAV
- Lua server pages (PHP-like functionality using Lua) with SQLite3, see page.lp
- Resumed download, URL rewrite, IP-based ACL, Windows service
- Excluding files from serving by URI pattern (file blacklist)
- Download speed limit based on client subnet or URI pattern
- Small footprint: Mongoose executable size is 64 kB on Linux 2.6 i386 system
- 320 kilobytes Windows executable with all of the above (including SSL, Lua, Sqlite) and no dependencies
- Simple and clean embedding API, mongoose.h. The source is in single mongoose.c file to make things easy.
- HTTP client functionality for embedded usage, capable of sending arbitrary HTTP/HTTPS requests
- Embedding examples: hello.c, post.c, upload.c, websocket.c
In a hurry? Add it to your Download Basket!
What's New in This Release:
- Windows binary made fully UNICODE aware. In previous versions, the presence of non-ASCII chars in document root, CGI script name, or directory name might have broken Mongoose as stand-alone
- or as Windows service. Now Mongoose works with non-ASCII paths properly. Internally, Mongoose uses UTF8 encoding. When making WinAPI calls, mongoose converts UTF8 strings to wide chars and calls UNICODE API.
- Enhanced authorization API by providing mg_set_auth_handler() and mg_authorize_digest()
- Removed mg_add_uri_handler(), added mg_set_request_handler(). There is only one URI handler that handles all requests, just like in 4.x. The reason for this change is to provide an ability to catch all URIs, and at the same time signal Mongoose to continue handling specific URIs.