繁体   English   中英

Apache代理与PHP代理

[英]Apache Proxy vs PHP Proxy

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

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

ProxyPass / http://myhiddenserver.com/ 

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

curl_exec( $ch );

与第一种选择相比,第二种选择有何缺点? 我对PHP scrip t 是否可能引入瓶颈或两种解决方案是否等效感到兴趣

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

谢谢!

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

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

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服务器的升级时间,这意味着它对您来说更便宜,并且速度会更快。响应时间。 (多少取决于响应时间,Web流量和其他因素。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM