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 入門(一)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM