代理服务器没有响应怎么办(Golang)

 2025-08-09 04:33:01  阅读 480  评论 0

摘要:如果❤️我的文章有帮助,欢迎点赞、关注。这是对我继续技术创作最大的鼓励。更多系列文章在我博客[1]Golang 实现简版反向代理正向代理 和 反向代理如果说昨天介绍的 正向代理服务器 是从 用户端 角度出发。使得用户端能够:访问无法访问的数据 —— 访问谷歌加速页面访问速度

如果❤️我的文章有帮助,欢迎点赞、关注。这是对我继续技术创作最大的鼓励。更多系列文章在我博客[1]

Golang 实现简版反向代理

正向代理 和 反向代理

如果说昨天介绍的 正向代理服务器 是从 用户端 角度出发。使得用户端能够:

访问无法访问的数据 —— 访问谷歌加速页面访问速度的缓存 —— CDN 缓存对客户端访问内容过滤, 访问授权 —— 公司内网不能访问购物网站; 网吧上网管理记录用户访问记录,对外隐藏特殊信息 —— 路由访问记录

那么今天要说的 反向代理服务器 则从 服务端 考虑

负载均衡, 提高服务可扩展、稳定性 —— 服务器集群、多中心机房、灾备ip白名单、限制开发端口, 保护内网安全 —— 网关限流、熔断、降级 —— 网关访问数据统计、访问内容权限控制 —— 网关内网、外网通过代理转发,对外隐藏实现细节。增加内部服务安全性 —— 网关

举个现有的例子:就是使用广受欢迎的Nginx。个人感觉反向代理在业务上面更多以网关角色呈现, 而网关则更像一个定制化 Nginx

简版反向代理实现

《HTTP 权威指南》中概括用一句话概括了 代理的核心功能:接受客户端的请求,转发到后端服务器,获得响应并返回给客户端

这些都没在下面的代码实现中一一找到对应:

接受客户端的请求:第 11 行 设置路由, 所有请求 代理服务器 由 handler() 方法处理handler() 方法内 第 27 行 解析 下游服务器 的 请求协议、ip地址。并设入请求变量 r转发到后端服务器:请求 r 由 第 33 行 transport.RoundTrip(r), 转发请求至下游服务器获得响应:下游服务器 请求 Header 信息 在 第 40 ~ 44 行 设入代理服务器的响应 w返回给客户端:代理服务器的响应 w 并返回

Golang 实现简版反向代理

Golang 实现简版反向代理

启动 下游(被代理)服务器

$ go run reverse_proxy_v1/real_server/main.go
2021/06/12 17:59:24 starting httpserver at 127.0.0.1:2003
2021/06/12 17:59:24 starting httpserver at 127.0.0.1:2004

测试 下游(被代理)服务器

$ curl 'http://127.0.0.1:2003/sda?sda=111'


http://127.0.0.1:2003/sda
RemoteAddr=127.0.0.1:49795,X-Forwarded-For=,X-Real-Ip=
headers =map[Accept:[*/*] User-Agent:[curl/7.69.1]]




$ curl 'http://127.0.0.1:2004/sda?sda=111'


http://127.0.0.1:2003/sda
RemoteAddr=127.0.0.1:49795,X-Forwarded-For=,X-Real-Ip=
headers =map[Accept:[*/*] User-Agent:[curl/7.69.1]]

启动 代理服务器

$ go run reverse_proxy/reverse_proxy_v1/reverse_proxy_base/main.go
2021/06/12 18:32:21 start serving on port2002

测试 代理服务器

$ curl 'http://127.0.0.1:2002/sda?sda=111'


# 转发至 2003 并返回结果
http://127.0.0.1:2003/sda
RemoteAddr=127.0.0.1:57595,X-Forwarded-For=,X-Real-Ip=
headers =map[Accept:[*/*] Accept-Encoding:[gzip] User-Agent:[curl/7.69.1]]

请求代理服务器,返回结果`http://127.0.0.1:2003/sda`; 与直接请求 `http://127.0.0.1:2003/sda?sda=111` 结果一致。代理成功

References

[1] 更多系列文章在我博客: https://coderdao.github.io/

版权声明:我们致力于保护作者版权,注重分享,被刊用文章【代理服务器没有响应怎么办(Golang)】因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!;

原文链接:https://www.yxiso.com/zhishi/2033316.html

发表评论:

关于我们
院校搜的目标不仅是为用户提供数据和信息,更是成为每一位学子梦想实现的桥梁。我们相信,通过准确的信息与专业的指导,每一位学子都能找到属于自己的教育之路,迈向成功的未来。助力每一个梦想,实现更美好的未来!
联系方式
电话:
地址:广东省中山市
Email:beimuxi@protonmail.com

Copyright © 2022 院校搜 Inc. 保留所有权利。 Powered by BEIMUCMS 3.0.3

页面耗时0.0465秒, 内存占用1.91 MB, 访问数据库24次

陕ICP备14005772号-15