我初学golang,最近在学一个简单的HTTPserver. 学习期间想到,有些服务是只能开放给内网的,不能给外网连接到的
那么golang的HTTP支持这种开发需求吗?
这是原有项目的代码
type HttpApiModule struct {
*module.Skeleton
httpServer *http.Server
}
m = new(HttpApiModule)
m.Skeleton = skeleton
m.Skeleton.Engine = m
m.Name = "HttpApiModule"
newHttpAddr := "127.0.0.1:8080" //为了安全,只绑定127.0.0.1
log.Debug("httpapi:%v",newHttpAddr)
m.httpServer = &http.Server{Addr: newHttpAddr, Handler: nil}
http.HandleFunc("/url1", Url1Funciotn)
http.HandleFunc("/url2", Url2Funciotn)
http.HandleFunc("/", indexFunction)
go m.httpServer.ListenAndServe()
我尝试使用过:
http.Server{Addr: "127.0.0.1:8080", Handler: nil}
以及:
http.Server{Addr: "localhost:8080", Handler: nil}
甚至试过内网IP:
http.Server{Addr: "172.16.0.5:8080", Handler: nil}
但是这几个尝试过都直接用外网访问
测试环境是腾讯云CENTOS7.8的云服务器
目前我的解决办法是在路由里面鉴定Request的RemoteAddr
如果不是127.0.0.1的请求,则不是本地请求,转向别的页面
这样子能解决问题,但是不够简单,每个路由都得加一个鉴定IP的功能
照理说应该有什么办法可以在启动HTTPserver的时候设定只能内网访问的
但是查了很多资料,没有找到有关的说明,也许是这个需求太小众了?