golang 实现一个简单的类似于nginx的web http server

众所周知, golang可用于http server编程, 但是包括http header 都需要自己去定义。

如何实现http 1.1协议 rfc2616 的一个简单的http server 呢?

http 1.1 协议 主要是实现了各种http header 和code 的请求和反应处理,比如 浏览器 请求一个 index.html 后,服务器返回index.html,浏览器还会请求 css js 文件.

这两天我在看 golang webAssembly ,偶然发现这不就是一个最简单的FileServer 么,而 golang的http包已经实现了

那么这个类似于nginx的简单的web http server的代码就是:

//reference https://github.com/golang/go/wiki/WebAssembly
package main

import (
	"flag"
	"log"
	"net/http"
)

var (
	listen = flag.String("listen", ":8080", "listen address")
	dir    = flag.String("dir", ".", "directory to serve")
)

func main() {
	flag.Parse()
	log.Printf("listening on %q...", *listen)
	err := http.ListenAndServe(*listen, http.FileServer(http.Dir(*dir)))
	log.Fatalln(err)
}

当然,nginx支持很多功能,比如反向代理,支持外挂php脚本,cgi等,golang完全可以实现一个替代nginx的程序,或者叫做重写nginx .
不知道有没有这样的,全功能 golang web http 服务器

Go WebAssembly 入门(一)

猜你喜欢

转载自www.cnblogs.com/ayanmw/p/12936884.html