Apache Proxy против PHP Proxy - PullRequest
       20

Apache Proxy против PHP Proxy

0 голосов
/ 14 декабря 2018

Скажем, у меня есть внутреннее приложение на внутреннем сервере.Скажем, у меня есть другой веб-сервер, на котором работает Apache и PHP, который должен проксировать первое приложение.

С одной стороны, я могу использовать ProxyPass с Apache с:

ProxyPass / http://myhiddenserver.com/ 

С другой стороны, я мог бысделать простой сценарий php, используя libcurl для реализации того же поведения прокси.

curl_exec( $ch );

Каковы недостатки второго варианта по сравнению с первым? Меня интересует, могут ли быть узкие места, введенные PHP-скриптом t, или эти два решения эквивалентны.

Я говорю о серверах под высокой нагрузкой.Хотя использование Apache очевидно просто, PHP даст мне большую свободу, если я захочу сделать условные вещи перед проксированием (например, частичное кэширование).

Спасибо!

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Apache живет перед вашим PHP-приложением.Apache всегда собирается получить веб-запрос.Таким образом, реальный вопрос заключается в том, должен ли PHP также получать веб-запрос, который Apache мог бы обработать самостоятельно, или вы должны включить в него PHP?

Ваше время ответа будет быстрее, если запрос никогда не попадет в PHPприложение, так как будет задействован на 1 код меньше (вероятно, только миллисекунды, но иногда могут иметь значение миллисекунды).В конечном итоге вам будет дешевле, если Apache выполнит свою работу, потому что если у вас есть PHP, то это на один шаг ближе к необходимости обновления вашего PHP-сервера раньше.Веб-приложения (в данном случае PHP) имеют максимальное количество одновременных запросов, которые они могут обработать, потому что у них вся структура (возможно, вы используете Laravel) загружены в ОЗУ, а одновременные запросы требуют большей мощности ЦП.Так, например, если ваш сервер PHP может обрабатывать 50 запросов одновременно, потому что это то, на что способно ваше оборудование, хорошо, если вы сделаете PHP прокси-сервером, вы просто израсходовали достаточное количество ваших доступных запросов.Apache будет ждать, пока у вас не будет свободного работника PHP для выполнения запроса, но это ожидание означает более медленный ответ для пользователей, использующих ваше PHP-приложение в целом.

Какую разницу можно измерить с помощью тестов и нагрузочного тестирования.Вы можете обнаружить, что это незначительно.Может быть, эта функция прокси будет очень неиспользованной.Но если у вас есть возможность просто настроить Apache для выполнения работы, и Apache может удовлетворить все ваши потребности, то я бы попросил Apache сделать это.

Некоторые люди могут предпочесть сделать это на PHP, если у них есть команда, которая владеет PHP, а не Apache, потому что выполнение этого в PHP облегчает им управление.

В конце концов, это своего рода вопрос мнения.

Но конкретный неопознанный ответ таков: если вы можете сделать это в Apache и чувствовать себя комфортно, управляя им в Apache вместо PHP, выВам нужно будет обновить ваш PHP-сервер не так скоро, что означает, что он будет дешевле для вас и будет иметь немного более быстрое время отклика.(От того, насколько это зависит от времени отклика, объема веб-трафика и других факторов.)

0 голосов
/ 14 декабря 2018

Если вы используете PHP для прокси-запросов, ваш веб-сервер также будет вовлечен в него, в соответствии с этим будет лучше использовать только веб-сервер.
Но если вы хотите добавить некоторую пользовательскую логику в процесс, этолучше использовать PHP.В любом случае эти решения не эквивалентны.

Также вам стоит взглянуть на Nginx для прокси, это может быть более эффективное решение:
https://serverfault.com/questions/143238/nginx-vs-apache-as-reverse-proxy-which-one-to-choose

...