As an adjacent dead comment points out, you'd use Emscripten to "convert nginx to WASM" (i.e. "compile"). Wasmer is a runtime.
But there are actually use cases to what you're talking about. Essentially instead of nginx -> LLVM -> machine code you're replacing it with nginx -> WASM -> cmm_of_wasm -> machine code. There are tons of LLVM opts already, but if there weren't, it might be reasonable to use WASM as IR and using cmm_of_wasm's opts to make it faster than a naive C compiler (but of course none of the popular compilers are naive anyways). Also, of course this won't work today because cmm_of_wasm doesn't rebuild the syscalls from emscripten-compiled-WASM (yet). But if you're writing your own language today, ignoring system interaction for a sec, targeting WASM even for native might not be a bad idea as backends are coming w/ optimizations.
But there are actually use cases to what you're talking about. Essentially instead of nginx -> LLVM -> machine code you're replacing it with nginx -> WASM -> cmm_of_wasm -> machine code. There are tons of LLVM opts already, but if there weren't, it might be reasonable to use WASM as IR and using cmm_of_wasm's opts to make it faster than a naive C compiler (but of course none of the popular compilers are naive anyways). Also, of course this won't work today because cmm_of_wasm doesn't rebuild the syscalls from emscripten-compiled-WASM (yet). But if you're writing your own language today, ignoring system interaction for a sec, targeting WASM even for native might not be a bad idea as backends are coming w/ optimizations.