HTML Diff
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>