Apache代理与PHP代理

时间:2018-12-14 14:16:20

标签: php apache proxy

说我在内部服务器上有一个后端应用程序。 假设我有另一个运行Apache和PHP的网络服务器,必须代理第一个应用程序。

一方面,我可以将ProxyPass与Apache配合使用:

ProxyPass / http://myhiddenserver.com/ 

另一方面,我可以使用libcurl做一个简单的php脚本来实现相同的代理行为。

curl_exec( $ch );

第二个选项与第一个选项相比有什么弊端? 我对PHP scrip是否可能引入瓶颈感兴趣,或者这两种解决方案是否等效?

我说的是高负载下的服务器。 虽然显然使用Apache很简单,但是如果我想在代理之前进行条件操作(例如特定的缓存),PHP将给我很大的自由度。

谢谢!

2 个答案:

答案 0 :(得分:1)

如果您将PHP用于代理请求,则您的Web服务器也将参与其中,根据此方法,仅使用Web服务器会更好。
但是,如果您想在流程中添加一些自定义逻辑,则最好使用PHP。 无论如何,这些解决方案是不等效的。

另外,您应该查看Nginx代理,它可能是更有效的解决方案:
https://serverfault.com/questions/143238/nginx-vs-apache-as-reverse-proxy-which-one-to-choose

答案 1 :(得分:1)

Apache位于PHP应用程序的前面。 Apache总是会收到Web请求。因此,真正的问题是,PHP是否还会收到Apache可以自己处理的Web请求,还是应该将PHP引入其中?

如果请求永远不会到达PHP应用程序,则您的响应时间将更快,因为所涉及的代码集少了1组(可能只有毫秒,但是毫秒有时很重要)。从长远来看,仅让Apache完成这项工作对您来说就更便宜了,因为如果您拥有PHP,那么这比需要尽快升级PHP服务器还近了一步。 Web应用程序(在这种情况下为PHP)具有可以处理的最大同时请求数,因为它们已将整个框架(也许您正在使用Laravel)加载到RAM中,并且同时请求需要更多的CPU能力。因此,例如,如果您的PHP服务器因为硬件能力而能够一次处理50个请求,那么如果您使PHP成为代理服务器,那么您就用光了相当多的可用请求。 Apache将一直等到您有一个免费的PHP工作人员来满足该请求,但这对于整个使用您的PHP应用程序的用户来说意味着较慢的响应。

可以通过基准测试和负载测试来衡量差异有多大。您可能会发现它可以忽略不计。也许此代理功能将非常不用。但是,如果您具有仅配置Apache来完成工作的能力,并且Apache可以满足您的所有需求,那么我将让Apache来完成。

如果某些人拥有一支精通PHP而不是Apache的团队,则可能更喜欢使用PHP进行操作,因为使用PHP进行操作使他们更易于管理。

最后,这是一个意见问题。

但是具体的答案是,如果您可以在Apache中进行操作并且对在Apache(而不是PHP)中进行管理感到满意,那么您将需要较少的升级PHP服务器的时间,这对您而言将更加便宜,并且具有稍微更快的响应时间。 (多少取决于响应时间,网络流量和其他因素。)