Apache2服务的HTTPS请求比通过反向代理服务慢

时间:2019-02-27 16:48:20

标签: apache go https webserver reverse-proxy

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

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

我的“问题”:
直接调用apache,即https://foo.com/bar/比通过我的反向代理,即https://foo.com:8080/bar/

调用网站要慢得多(200-400ms)

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


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

关于编码:两种情况下的编码都是一致的:两种情况(位置1对2)的编码头和Content-Length都相同,客户端也会收到文件大小。不确定为什么在HAR Viewer中仅在第二种情况下显示未压缩的大小。如果使用Chrome浏览器,两种情况下都可以看到压缩后的大小。

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

1 个答案:

答案 0 :(得分:0)

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

  1. apache反向代理处理了一些缓存,其中包含图像,css或javascript之类的静态文件。
  2. 浏览https网址时。一个名为“ ssl证书卸载”的过程将会发生,它可能会导致巨大的服务器负载。因此,如果将Web应用程序和ssl证书部署在同一服务器上,则负载可能会导致高延迟。通常,我们使用一种名为load-balancer的特殊设备来卸载ssl证书,就像反向代理一样。