# vintage Let's take it back to the 1990s. This library implements a multi-threaded server that speaks the [FastCGI protocol](https://www.mit.edu/~yandros/doc/specs/fcgi-spec.html). ## Try it out! Browsers don't speak FastCGI protocol. Thankfully, most popular web servers do. I'll be using Nginx & Caddy as examples. 1. Download either [Nginx](https://nginx.org/) or [Caddy](https://caddyserver.com/) 2. Configure the web server to reverse proxy fastcgi: 1. If you picked caddy, stick this in a file in the current directory called `Caddyfile`: ``` localhost { reverse_proxy localhost:8000 { transport fastcgi } } ``` 2. If you picked nginx, stick this in a file in the current directory called `nginx.conf`: ``` events { } http { server { location / { fastcgi_pass localhost:8000; } } } ``` 3. Run the web server - Caddy: `sudo caddy run --config Caddyfile` - Nginx: `sudo nginx -p $(pwd) -c nginx.conf` 4. Run `cargo new --bin app && cd app && cargo add vintage`, and stick this in `main.rs`: ```rust use vintage::{ServerConfig, Response}; fn main() { let config = ServerConfig::new() .on_get(["/about"], |_req, _params| { Response::html("

Hello World

") }); let server = vintage::start(config, "localhost:8080").unwrap(); server.join(); } ``` 5. Run `cargo run` 6. Visit `http://localhost` on your browser! ## Similar libraries - [fastcgi](https://crates.io/crates/fastcgi) - [tokio-fastcgi](https://crates.io/crates/tokio-fastcgi) - [fastcgi-server](https://github.com/TheJokr/fastcgi-server)