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 服务器
------------------------------------------------------------------------------------------------
一定要专业!本博客定位于 ,C语言,C++语言,Java语言,Android开发和少量的Web开发,之前是做Web开发的,其实就是ASP维护,发现EasyASP这个好框架,对前端后端数据库 都很感觉亲切啊。. linux,总之后台开发多一点。以后也愿意学习 cocos2d-x 游戏客户端的开发。