From 78c9c73c774782b8b6cbf5e08ba4b0354372185f Mon Sep 17 00:00:00 2001 From: Syrus Date: Thu, 6 Dec 2018 20:25:14 -0800 Subject: [PATCH] Improved the Nginx example --- README.md | 2 +- examples/nginx/.gitignore | 1 + examples/nginx/html/index.html | 36 ++++++++++++++++++++++++++++ examples/nginx/html/wasmer-logo.png | Bin 0 -> 15613 bytes examples/nginx/logs/nginx.pid | 0 examples/nginx/nginx.conf | 24 +++++++++++++++++++ examples/{ => nginx}/nginx.wasm | Bin 7 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 examples/nginx/.gitignore create mode 100644 examples/nginx/html/index.html create mode 100644 examples/nginx/html/wasmer-logo.png create mode 100644 examples/nginx/logs/nginx.pid create mode 100644 examples/nginx/nginx.conf rename examples/{ => nginx}/nginx.wasm (100%) diff --git a/README.md b/README.md index c3fd1e50e..3e7e3000d 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ format defined by the WebAssembly reference interpreter (`.wat`). Once installed, you will be able to run: ```sh -wasmer run nginx.wasm +wasmer run examples/nginx/nginx.wasm -- -p examples/nginx -c nginx.conf ``` ## Building & Running diff --git a/examples/nginx/.gitignore b/examples/nginx/.gitignore new file mode 100644 index 000000000..e46878d35 --- /dev/null +++ b/examples/nginx/.gitignore @@ -0,0 +1 @@ +*_temp diff --git a/examples/nginx/html/index.html b/examples/nginx/html/index.html new file mode 100644 index 000000000..3bf59b84a --- /dev/null +++ b/examples/nginx/html/index.html @@ -0,0 +1,36 @@ + + + + + + +
+

+ You did it! Nginx is running using + +

+

Enjoy this incredible achievement with us! 😊

+
+ + + diff --git a/examples/nginx/html/wasmer-logo.png b/examples/nginx/html/wasmer-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..cfc26f6d05bcb59448a3045f5d92b79141fb0914 GIT binary patch literal 15613 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