Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/slavaganzin/http2-server
Simple HTTP2/SPDY server similiar to http-server using express & node-spdy
https://github.com/slavaganzin/http2-server
http2 http2-push nodejs server
Last synced: about 2 hours ago
JSON representation
Simple HTTP2/SPDY server similiar to http-server using express & node-spdy
- Host: GitHub
- URL: https://github.com/slavaganzin/http2-server
- Owner: slavaGanzin
- Created: 2016-09-22T13:04:33.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2020-09-22T12:41:31.000Z (about 4 years ago)
- Last Synced: 2024-11-05T18:57:42.465Z (1 day ago)
- Topics: http2, http2-push, nodejs, server
- Language: JavaScript
- Homepage:
- Size: 106 KB
- Stars: 21
- Watchers: 1
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
*Stop bundling your css/js and enjoy [HTTP2](https://http2.github.io/) and [PUSH_PROMISE](http://httpwg.org/specs/rfc7540.html#PUSH_PROMISE)*
[![npm version](https://badge.fury.io/js/static-http2-server.svg)](https://badge.fury.io/js/static-http2-server)
[![Build Status](https://travis-ci.org/slavaGanzin/http2-server.svg?branch=master)](https://travis-ci.org/slavaGanzin/http2-server)# http2-server
Simple HTTP2/SPDY server similiar to [http-server](https://github.com/indexzero/http-server) using [express](https://github.com/expressjs/express) & [node-spdy](https://github.com/indutny/node-spdy)*Due to issues in [node-spdy](https://github.com/spdy-http2/node-spdy/issues/363) http2-server will not work on Node 12 or above. If someone want to fix this we all will appreciate your work*
# Installation
```
sudo npm install -g static-http2-server
```
# Naive PUSH_PROMISE
By default http2-server match static resources with their Referer header (for example '/') and will [server push](https://http2.github.io/faq/#whats-the-benefit-of-server-push) them coupled with response, when refered resource (e.g. index.html) would be requested next time# Usage
```
http2-server [path] [options]
Options:
-h, --help output usage information
-V, --version output the version number
-a, --address [127.0.0.1] address to use
-p, --ssl-port [4443] ssl port to use
--http-port [8080] http port which redirects to ssl port
-c, --cache enable cache
-m, --maxAge [0] cache maxAge in ms acceptable string
https://github.com/zeit/ms-P, --no-push disable naive PUSH_PROMISE
-o, --open [xdg-open] open default app after starting the server
-o firefox
-o "google-chrome --incognito"
-o "curl --insecure"-l, --log [dev] log format (dev|combined|common|short|tiny)
https://github.com/expressjs/morgan#predefined-formats-s, --silent suppress log messages from output
--cors enable CORS
-S, --no-ssl disable https
Works as plain http server without http2, spdy, push_promise-e, --cert [certs/cert.pem] path to ssl cert file
-k, --key [certs/key.pem] path to ssl key file
--generate-cert save autogenerated certificates and exit
--trust-cert add certificate to trusted (currently linux only)
-g, --compression enable deflate/gzip/brotli/zopfli
-i, --index [index.html] Specify index file name
--proxy [https://127.0.0.1:4443] Proxies all requests which can't be resolved locally to the given url.
e.g.: -P http://someurl.com
-I, --no-autoindex Disable auto index
--404 404 error page```
# Usage as a dependency in your project
```
npm install static-http2-server --save
```package.json:
```json
...
"scripts": {
"start": "node_modules/.bin/http2-server -o",
},
...
```# SSL certificates
For development you can use autogenerated selfsigned certificates. For production you should use [Let's encrypt](https://letsencrypt.org/) or any other [certificate authority](https://en.wikipedia.org/wiki/Certificate_authority)#### certutil
To generate and/or trust certificate you need [certutil](https://www.google.com/search?q=certutil).```bash
#Ubuntu
sudo apt install libnss3-tools#Arch
sudo pacman -S nss#Mac
brew install nss
```#### Generate selfsigned certificates and trust them
```bash
http2-server --generate-cert --trust-cert
```#### Add previously generated certificate to trusted
```bash
http2-server --trust-cert --cert path/to/your.cert
```#### See also
[minica](https://github.com/jsha/minica)
[letsencrypt-cli](https://github.com/Daplie/letsencrypt-cli)