#reverse-proxy #modern #repository #web-server #github #information

app katwebx

A fast static web server and reverse proxy for the modern web. More information is available in the project's GitHub repository.

7 releases ()

Uses old Rust 2015

1.0.0-eval2 Aug 17, 2019
1.0.0-eval1 Aug 16, 2019
0.1.1-beta Feb 2, 2019
0.1.0-beta.3 Dec 15, 2018

#645 in HTTP server

21 downloads per month

MIT license

72KB
1K SLoC

KatWebX Build status Build Status Percentage of issues still open Average time to resolve an issue

An extremely fast static web-server and reverse proxy for the modern web. More info is available on KatWebX.kittyhacker101.tk.

Important Info

KatWebX is still a work in progress, and you may encounter issues. KatWebX is not well tested, production use is not recommended! Some releases are more stable than others, anything from the releases page is likely to be far more stable than the current code in the git repository.

Interested in the project? You can help fund KatWebX's development by donating to the Bitcoin address 1KyggZGHF4BfHoHEXxoGzDmLmcGLaHN2x2.

Release Schedule

Approximate dates for the release of KatWebX are listed below.

  • August - Evaluation releases, containing all features being fully implemented, and a somewhat performant and readable codebase. No functionality changes will be made between now and the release, only performance optimizations, code cleanup, and bug fixes will be implemented at this time. Evaluation releases are intended for testing how well KatWebX functions in a production environment, but they are not intended for use in large-scale deployments or critical systems.
  • September - A fully-functional, production-ready, 1.0 release will be finished and packaged. Additional updates will only add minor functionality changes, focusing mostly on performance improvments and bug fixes.

Known issues (as of this document's writing)

  • Evaluation release 1 does not send the content-type HTTP header correctly. This will be fixed in a future release.
  • Evaluation release 1 was compiled before an important change to the codebase, and it is not suitable for evaluating KatWebX's functionality. A new build will be made soon.

Current Features

  • Easy to read TOML configuration
  • Flexible configuration parsing
  • Regex-based redirects
  • Compressed regex-based reverse proxy
  • HTTP basic authentication
  • Extremely fast file serving
  • Brotli file compression
  • Systemd/systemfd socket listening
  • On-the-fly config reloading
  • HSTS support
  • SNI and OCSP response stapling
  • High performance HTTP/2 and TLS 1.3
  • Multiple logging formats
  • Material design server-generated pages

Possible Features (probably won't be implemented soon, but a possibility in the future)

  • Let's Encrypt integration (Difficult but practical to implement, possible in the future)
  • Caching proxy (Currently very difficult to implement, unlikely to be implemented in the near future)
  • Advanced load balancer (May be implemented in the future)
  • Websocket reverse proxying (May be implemented in the future)
  • Support for more architectures (Likely to be implemented eventually, requires dependencies to be updated)

Unlikely features (will not be implemented soon or at all)

  • QUIC support (The underlying HTTP library (actix-web) doesn't support it, and only 1 browser supports it out of the box. Until it gets more adoption, I'm not going to put effort into adding it myself.)
  • CGI/FastCGI support (There are no existing client libraries for Rust, and there's no real reason to implement it anyways. HTTP/2 can do everything that FastCGI does, and KatWebX has an HTTP/2 capable reverse proxy built-in.)
  • SPDY support (SPDY is dying, as it's being replaced by HTTP/2. KatWebX has full support for HTTP/2.)
  • TLS 1.1 or older (All recent browsers support TLS 1.2 or higher, and these older TLS protocols are very insecure.)
  • Documentation in other languages (I don't know any other languages, and I don't have the resources to hire a translator.)

Dependencies

~37–53MB
~1M SLoC