0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Веб-сервер - специализированная программа, которая обрабатывает запросы клиентов к веб-приложениям. Когда мы загружаем страницу в браузере, мы обращаемся к веб-серверу, расположенному на удаленном сервере. Кроме главной функции у веб-серверов большое количество вспомогательных. Среди них кеширование, перезапись запросов, раздача статики, например, картинок, балансировка нагрузки и многое другое.</p>
1
<p>Веб-сервер - специализированная программа, которая обрабатывает запросы клиентов к веб-приложениям. Когда мы загружаем страницу в браузере, мы обращаемся к веб-серверу, расположенному на удаленном сервере. Кроме главной функции у веб-серверов большое количество вспомогательных. Среди них кеширование, перезапись запросов, раздача статики, например, картинок, балансировка нагрузки и многое другое.</p>
2
<p>Веб-сервера не имеют информации о том, на каком языке написан сайт. Процедуры взаимодействия между веб-сервером и сайтом стандартизированы на всех языках. Благодаря этому число веб-серверов ограничено, и они могут обрабатывать сайты, написанные на любом языке.</p>
2
<p>Веб-сервера не имеют информации о том, на каком языке написан сайт. Процедуры взаимодействия между веб-сервером и сайтом стандартизированы на всех языках. Благодаря этому число веб-серверов ограничено, и они могут обрабатывать сайты, написанные на любом языке.</p>
3
<p>Первым и простым способом взаимодействия веб-сервера с кодом сайта был стандарт<strong>CGI (Common Gateway Interface)</strong>. Он был разработан с учетом того, что сервер не должен зависеть от языка программирования, используемого для написания сайта. Он использует переменные окружения для передачи параметров запроса веб-серверу.</p>
3
<p>Первым и простым способом взаимодействия веб-сервера с кодом сайта был стандарт<strong>CGI (Common Gateway Interface)</strong>. Он был разработан с учетом того, что сервер не должен зависеть от языка программирования, используемого для написания сайта. Он использует переменные окружения для передачи параметров запроса веб-серверу.</p>
4
<p>Сайт представляет собой исполняемый файл, который запускается веб-сервером во время обработки входящего запроса и передает в него все параметры запроса через переменные окружения. Всё, что требуется от скрипта, - это вернуть HTTP-ответ в стандартный вывод (STDOUT). Общий алгоритм работы выглядит так:</p>
4
<p>Сайт представляет собой исполняемый файл, который запускается веб-сервером во время обработки входящего запроса и передает в него все параметры запроса через переменные окружения. Всё, что требуется от скрипта, - это вернуть HTTP-ответ в стандартный вывод (STDOUT). Общий алгоритм работы выглядит так:</p>
5
<ol><li>Клиент запрашивает страницу сайта</li>
5
<ol><li>Клиент запрашивает страницу сайта</li>
6
<li>Веб-сервер принимает запрос и устанавливает переменные окружения. Через них приложению передаются данные и служебная информация</li>
6
<li>Веб-сервер принимает запрос и устанавливает переменные окружения. Через них приложению передаются данные и служебная информация</li>
7
<li>Веб-сервер перенаправляет запросы через стандартный поток ввода (stdin) на вход вызываемой программы</li>
7
<li>Веб-сервер перенаправляет запросы через стандартный поток ввода (stdin) на вход вызываемой программы</li>
8
<li>CGI-приложение выполняет все необходимые операции и формирует результаты в виде HTML</li>
8
<li>CGI-приложение выполняет все необходимые операции и формирует результаты в виде HTML</li>
9
<li>Сформированный гипертекст возвращается веб-серверу через стандартный поток вывода (stdout). Сообщения об ошибках передаются через поток ошибок (stderr)</li>
9
<li>Сформированный гипертекст возвращается веб-серверу через стандартный поток вывода (stdout). Сообщения об ошибках передаются через поток ошибок (stderr)</li>
10
<li>Веб-сервер передает результаты запроса клиенту</li>
10
<li>Веб-сервер передает результаты запроса клиенту</li>
11
</ol><p>В режиме CGI каждый запрос запускает скрипт сайта заново. Это означает, что вся логика инициализации отрабатывает для каждого запроса по новой, а после выполнения запроса скрипт завершается. Если между запросами есть информация, которую нужно сохранить, например, данные пользователя, то это отправляют в хранилище, файловую систему или базу данных.</p>
11
</ol><p>В режиме CGI каждый запрос запускает скрипт сайта заново. Это означает, что вся логика инициализации отрабатывает для каждого запроса по новой, а после выполнения запроса скрипт завершается. Если между запросами есть информация, которую нужно сохранить, например, данные пользователя, то это отправляют в хранилище, файловую систему или базу данных.</p>
12
<h2>Реализации</h2>
12
<h2>Реализации</h2>
13
<p>Существует много разных веб-серверов. Некоторые из них встроены в PHP, а другие - общего назначения.</p>
13
<p>Существует много разных веб-серверов. Некоторые из них встроены в PHP, а другие - общего назначения.</p>
14
<p>Самым эффективным и популярным веб-сервером на данный момент является Nginx. С ним нам и стоит познакомиться. Для разработки он не понадобится, так как в PHP встроен свой сервер, но в продакшен-среде без него никак.</p>
14
<p>Самым эффективным и популярным веб-сервером на данный момент является Nginx. С ним нам и стоит познакомиться. Для разработки он не понадобится, так как в PHP встроен свой сервер, но в продакшен-среде без него никак.</p>
15
<p>Помимо этих серверов в PHP мире до сих пор популярен Apache. Его можно использовать только в случае, если нет другого выбора, например, если хостинг предлагает только его. В остальных случаях предпочтительнее использовать Nginx. Это связано с различиями в работе самих серверов. Apache работает по модели "поток за запрос", что является более затратным и медленным в сравнении с асинхронной моделью Nginx.</p>
15
<p>Помимо этих серверов в PHP мире до сих пор популярен Apache. Его можно использовать только в случае, если нет другого выбора, например, если хостинг предлагает только его. В остальных случаях предпочтительнее использовать Nginx. Это связано с различиями в работе самих серверов. Apache работает по модели "поток за запрос", что является более затратным и медленным в сравнении с асинхронной моделью Nginx.</p>