apache - Apache2 提供的 HTTPS 请求比通过反向代理慢

标签 apache go https webserver reverse-proxy

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

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

我的“问题”:
直接调用 apache,即 https://foo.com/bar/ 比通过我的反向代理调用网站,即 https://foo.com 慢得多(200-400 毫秒) :8080/栏/

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


更新:显示当前设置的草图: Current Setup

关于编码:Encoding在两种情况下是一致的:Encoding header和Content-Length在两种情况下(情况1 vs 2)相同,客户端也收到文件大小。不确定为什么在 HAR 查看器中它只显示第二种情况下的未压缩大小。如果在 Chrome 中检查,我可以看到两种情况下的压缩大小。

更新#2:我得出的结论是,golang 实现在短时间内比默认配置的 apache2 更有效地处理来自同一客户端的多个请求。 Sicne 我只测试了几个客户端我不能说它的扩展性如何 - 我想 web 服务在负载下会落后。
我认为这已关闭,感谢大家的帮助。

最佳答案

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

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

关于apache - Apache2 提供的 HTTPS 请求比通过反向代理慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54910531/

相关文章:

PHP、shell 命令和 jar 文件

apache - 安装 phpmyadmin 后更改服务器选择

google-app-engine - 谷歌应用引擎 api_server 与模块

某些帖子/页面上的 CSS 不显示在移动设备上

internet-explorer - 避免 IE 中 http 和 https 弹出窗口冲突的最佳解决方案是什么?

linux - Apache HTTP 服务器在哪里存储传入请求的数据

linux - 从 CGI 脚本重启服务

json - 使用 Go 解码 PubSub 请求数据 []bytes

go - 使用来自未导入包的类型的返回值

ios - 调用 HTTPS Soap 服务时出现 NSURLConnection 错误