登录
首页 >  Golang >  Go问答

Apache2 提供的 HTTPS 请求比通过反向代理提供的速度慢

来源:stackoverflow

时间:2024-04-21 13:18:37 284浏览 收藏

目前golang学习网上已经有很多关于Golang的文章了,自己在初次阅读这些文章中,也见识到了很多学习思路;那么本文《Apache2 提供的 HTTPS 请求比通过反向代理提供的速度慢》,也希望能帮助到大家,如果阅读完后真的对你学习Golang有帮助,欢迎动动手指,评论留言并分享~

问题内容

我的情况:

网站使用 ubuntu 服务器上的默认 apache2 安装进行托管。 使用 HTTPS 和自签名证书(用于开发)在端口 443 上提供服务。

现在我有一个用 golang 编写的简单服务,它侦听端口 8080 并充当反向代理来接收 https 请求,将它们转发到本地 apache 并将响应返回给客户端。此网络服务不缓存任何文件,仅转发请求。

代码:https://play.golang.org/p/tnfKVWyLuZQ

我的“问题”:

直接调用 apache,即 https://foo.com/bar/ 比通过我的反向代理调用网站(即 https://foo.com:8080/bar/)要慢得多(200-400ms)

为什么直接调用apache2比较慢?我预计使用反向代理会产生开销,而不是加速。 -> 示例页面比较:https://i.stack.imgur.com/Iq2g5.png

更新:草图显示当前设置: 当前设置

关于编码:两种情况下的编码都是一致的:编码标头和内容长度在两种情况下(情况 1 与 2)相同,客户端还接收文件大小。不知道为什么在 HAR 查看器中它只显示第二种情况下未压缩的大小。如果在 Chrome 中检查,我可以看到两种情况下的压缩大小。

更新#2:我得出的结论是,golang 实现在短时间内处理来自同一客户端的多个请求比默认配置中的 apache2 更有效。因为我只对少数客户端进行了测试,所以我不能说它的扩展性如何 - 我想 Web 服务在负载下会落后。

我认为此问题已结束,感谢大家的帮助。


解决方案


据我所知。有两个可能的原因。

  1. Apache 反向代理处理一些包含静态文件(如图像、CSS 或 JavaScript)的缓存。
  2. 当您浏览 https 网址时。将会发生一个名为“ssl证书卸载”的过程,它可能会导致巨大的服务器负载。因此,如果Web应用程序和ssl证书部署在同一台服务器上,负载可能会导致高延迟。一般我们会使用一个名为load-balancer的特殊设备来卸载ssl证书,就像反向代理一样。

到这里,我们也就讲完了《Apache2 提供的 HTTPS 请求比通过反向代理提供的速度慢》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>