[Go]基于Go语言的Web路由转发,多个网站共享一个端口(新版本,支持WebSocket)

news/2024/5/14 4:12:38/文章来源:https://blog.csdn.net/weixin_30938149/article/details/101792572

之前编写过一个Web路由转发,可以参考我之前的博客

之前的版本具有很多问题,所前段时间一直很忙,在做我的新东西和实习,所以就一直没更新

今天忙里偷闲,就更新一下Web路由

主要解决的还是多语言Web开发时,整合至一个端口的问题

当然除了这个功能,还有很多有趣的用法,比如网站镜像,绕过备案等玩法

废话不说直接上代码

package mainimport("log""strings""net/http""io/ioutil""encoding/json""github.com/vulcand/oxy/forward""github.com/vulcand/oxy/testutils"
)type Rule struct{Domain string `json:Domain`Address string `json:Address`
}
type Setting struct{MainPort string `json:MainPort`Rules []Rule `json:Rules`
}var setting Setting
var fwd *forward.Forwarderfunc redirectHandle(w http.ResponseWriter, r *http.Request){address := getAddress(r.Host)if address != "" {r.URL = testutils.ParseURI("http://"+address)log.Println("Info: "+r.Host+" => "+address)fwd.ServeHTTP(w, r)} else {w.WriteHeader(500)}
}func getAddress(host string) string {for _,v := range setting.Rules {if strings.Compare(host,v.Domain) == 0 {return v.Address}}return ""
}func Init(){var Data,err = ioutil.ReadFile("setting.json")if err != nil{log.Fatal("Read Config File Error!")return}err = json.Unmarshal(Data,&setting)if err != nil{log.Fatal("Read Config JSON Error!Please Check!")return}log.Println("Main Port: "+setting.MainPort)for i:=0;i<len(setting.Rules);i++{log.Println("Import Rule: "+setting.Rules[i].Domain+" <----> "+setting.Rules[i].Address)}
}func main(){Init()fwd, _ = forward.New()redirect := http.HandlerFunc(redirectHandle)s := &http.Server{Addr:           ":"+setting.MainPort,Handler:        redirect,}log.Println("Info: Listening port "+s.Addr)s.ListenAndServe()
}

下面是配置文件

{"MainPort": "80","Rules": [{"Domain":"bt.onlinecode.cn","Address":"123.207.241.119:88"},{"Domain":"test.onlinecode.cn","Address":"123.207.241.119"}]
}

MainPort:监听的主端口

Rules:就是定义的相关规则,Domain是绑定的IP或域名,Address就是真实的地址

下面是运行输出

下面是项目地址:

https://github.com/leeli73/WebRouter

包括Windows x64和Linux x64的几个release

转载于:https://www.cnblogs.com/lee-li/p/11287355.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_805773.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大型网站图片服务器架构的演进

在主流的Web站点中&#xff0c;图片往往是不可或缺的页面元素&#xff0c;尤其在大型网站中&#xff0c;几乎都将面临“海量图片资源”的存储、访问等相关技术问题。在针对图片服务器的架构扩展中&#xff0c;也会历经很多曲折甚至是血泪教训&#xff08;尤其是早期规划不足&am…

快速在Ubuntu安装PHP网站

快速安装使用的是tasksel&#xff0c;tasksel是Debian / Ubuntu的工具&#xff0c;安装多个相关软件包作为一个协调的“任务”到你的系统。这个lamp-server^跟taskel这个程序有关。下面是详细步骤&#xff1a; 一、升级当前Linux环境 这里我采用UBUNTU发行版本&#xff0c;需要…

「全民k歌」有什么秘密?网站数据分析之数据获取

最近看到身边好几个朋友都在用“全民K歌”这款软件在手机上K歌&#xff0c;使用频率还是很高&#xff0c;于是就想来看看全民K歌平台的用户究竟是一群什么样的用户?他们有什么样的特征。然后进行数据分析&#xff0c;强化自己的分析思维与实战能力。这一个过程我将会分为四个部…

智能制造类汽车类网站

1.3D打印与汽车制造网站:3D造--https://www.3dzao.cn/articles/case/list.html?tags12872&pn1 2.电子发烧友论坛:汽车电子技术论坛板块 3.中国汽车工程学会:http://www.sae-china.org/ 中国汽车工程学会&#xff08;SAE-China&#xff09;成立于1963年&#xff0c;是由中…

大型网站架构系列:电商网站架构案例(2)

电网网站架构案例系列的第二篇文章。主要讲解网站架构分析&#xff0c;网站架构优化&#xff0c;业务拆分&#xff0c;应用集群架构&#xff0c;多级缓存&#xff0c;分布式Session。 五、网站架构分析 根据以上预估&#xff0c;有几个问题&#xff1a; 需要部署大量的服务器&a…

细节决定网站的用户和流量

“一个好网站让人喜爱&#xff0c;一个差网站让人厌恶”&#xff0c;你知道好网站的标准是什么&#xff0c;那又知不知道什么网站让人反感吗&#xff1f;你的建站审美不代表用户的赞同。好网站的细节处理你需要注意的&#xff1a; 1.自动播放音乐、声音&#xff0c;&#xff08…

网站seo优化教你如何引蜘蛛爬行网站

1、 网站和页面的权重 这个是咱们都知道的&#xff0c;网站和页面的权重越高的话&#xff0c;蜘蛛一般会匍匐的越深&#xff0c;被蜘蛛录入的页面也更多一些。可是一个新的网站&#xff0c;权重到达1的话是相对简单的&#xff0c;可是假如想要把权重再网上添加则会越来越难。 2…

自定义网站404页面

404页面是客户端在浏览网页时&#xff0c;服务器无法正常提供信息&#xff0c;或是服务器无法回应&#xff0c;且不知道原因所返回的页面&#xff0c;简单的说就是当别人访问你网站的某一个已经删除或不存在的网页的时候&#xff0c;服务器自动显示的页面。404页面对seo是有一定…

Django中使用后台网站模板

背景&#xff1a; 一直想自己开发一个网站&#xff0c;但是前端知识又不多&#xff0c;好在有模板可以使用&#xff0c;下载地址&#xff1a;https://download.csdn.net/download/wjgccsdn/10843808 开干&#xff1a; 环境&#xff1a; win 10 python 2.7 Django 1.11 pycharm …

网站一直优化不动,是不是被惩罚?

SEO是一个千变万化的工作&#xff0c;你的每一个优化策略&#xff0c;都决定网站不同的走向&#xff0c;在很长一段时期中&#xff0c;我们通常会遇到各种问题&#xff0c;比如&#xff1a;网站一直优化不动。 长期停留在某个阶段&#xff0c;这让SEO人员&#xff0c;显得无所…

第三章 大型网站核心架构要素

内容梳理 架构&#xff0c;通俗的说法是“最高层次的规划&#xff0c;难以改变的决定”&#xff0c;这些规划和决定奠定了事物未来发展的方向和最终的蓝图。 软件架构&#xff0c;维基百科定义&#xff0c;“有关软件整体结构与组件的抽象描述&#xff0c;用于指导大型软件系统…

优秀网站设计:打造有吸引力的网站(原书第3版)

《优秀网站设计:打造有吸引力的网站(原书第3版)》基本信息原书名&#xff1a;Web Style Guide, 3rd Edition作者&#xff1a; (美)Patrick J. Lynch Sarah Horton 译者&#xff1a; 李静丛书名&#xff1a; UI设计丛书出版社&#xff1a;机械工业出版社ISBN&#xff1a;9787111…

分享一些好用的网站

前言 这两年收藏了不少网站&#xff0c;特地整理一下&#xff0c;把一些大家都可能用得上的分享出来&#xff0c;希望能对你有用。 考虑到有一些网站大多数人都知道&#xff0c;所以我就不列出来了。 我把这些网站分为了几大类&#xff1a; 工具类素材类社区类工具类 1、start.…

【青松资讯】Anonymous匿名者黑客组织公布攻击新目标:100家中国政府网站

去年年底我们曾经发送一篇推文&#xff0c;简单介绍了Anonymous匿名者黑客组织的前世今生以及其为OpIcarus 2018所做下的累累恶行。 但你以为这就是全部了么&#xff1f; △2019年新年伊始&#xff0c;意大利警察工会遭到匿名者的攻击。 匿名者组织入侵了该网站的后台&#x…

中国铁路 12306 网站全新改版升级:支持扫码登录

开发四年只会写业务代码&#xff0c;分布式高并发都不会还做程序员&#xff1f; 中国铁路官方宣布&#xff0c;全新改版升级的中国铁路 12306 网站将于11月3日&#xff08;即今天&#xff09;正式上线运营&#xff0c;网站客运服务功能更趋完善&#xff0c;旅客购票将更加方便…

Java生成sitemap网站地图

访问我的博客 sitemap 是什么&#xff1f;对应没有接触过网站 SEO 的同学可能不知道&#xff0c;这里引用一下百度站长的一段解释。 Sitemap&#xff08;即站点地图&#xff09;就是您网站上各网页的列表。创建并提交Sitemap有助于百度发现并了解您网站上的所有网页。您还可以使…

好域名怎么选?总结15名网站大佬给我的8条建议!(精华)...

写网站上线的文章中提到需要有域名&#xff0c;本来是想在百度里搜一篇“选域名方面”的文章链接过去就好&#xff0c;但是看了好几篇&#xff0c;讲的都太笼统了&#xff0c;看完不知所云&#xff0c;一看就是“互相借鉴”的文章。所以我问了身边的几十位大佬&#xff0c;让他…

网站分析实战--如何以数据驱动决策,提升网站价值(大数据时代的分析利器)...

《网站分析实战--如何以数据驱动决策&#xff0c;提升网站价值》&#xff08;大数据时代的分析利器&#xff09;基本信息作者&#xff1a; 王彦平 吴盛峰 出版社&#xff1a;电子工业出版社ISBN&#xff1a;9787121193125上架时间&#xff1a;2013-1-10出版日期&#xff1a;201…

nginx首登网站数量市占宝座 挑战Apache地位

网络资安公司Netcraft释出2019年4月的网页服务器调查结果&#xff0c;发现nginx成为网站数量市占率第一名。Netcraft在四月收集了14亿网站的回应&#xff0c;其中包括了2.3亿个不重复网域&#xff0c;以及接近900万台的网页用计算机。比起三月的调查&#xff0c;Netcraft可以取…

网站推荐:一路收藏的正能量网站

我喜欢的教育、学习、在线阅读网站 [网易公开课] 在土豆网上可以搜索到海量的公开课视频&#xff0c;iTunes也是&#xff0c;里面可以找到很多公开课&#xff0c;比如我随意搜索的一些&#xff0c;在iTunes里面有一个University部分&#xff0c;里面有太多资源&#xff0c;不赘…