Все внимание было уделено этому, наконец-то оно здесь FastCGI . Более 80% крупных людей, которые читают мои статьи и видео, PHPer Давай, сделай это PHP ,FastCGI Конфигурация обязательна. компьютерная графика 、FastCGI 、PHP-FPM Эти концепции мы разработали давным-давно Узнайте о PHP-FPMhttps://mp.weixin.qq.com/s/NUpDnfYfbPuWmal4Am3lsg Об этом узнал из этой статьи. Друзья, которые не помнят, могут вернуться и посмотреть. Если вам кажется, что это слишком просто, вы также можете поискать соответствующую информацию самостоятельно.
Полное имя модуля FastCGI — ngx_http_fastcgi_module, он включен в исходный код ядра и не требует отдельной компиляции.
Давайте возьмем пример из нашей первой статьи о базовом модуле HTTP. Самая простая конфигурация выглядит следующим образом.
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}
Правильно, всего несколько простых конфигураций, их функции мы объясним позже. Стандартное подключение к PHP-FPM очень простое. Однако CGI — это универсальный интерфейс шлюза. Поэтому не только PHP, но и любой язык, такой как Python, Java, C++ и т. д., если они реализуют интерфейс FastCGI. все они могут использовать эту форму интерфейса для взаимодействия с Nginx. И FastCGI также предоставляет API на этих языках, но я с этими языками не знаком, и в большинстве случаев FastCGI с использованием Nginx сочетается с PHP, поэтому не будем вдаваться в подробности. Друзья, которые интересуются этими языками и владеют ими, могут найти информацию и отладить ее самостоятельно.
Далее давайте посмотрим, что сегодня делают три инструкции по настройке в приведенной выше конфигурации.
Установите адрес сервера FastCGI.
fastcgi_pass address;
Значения по умолчанию нет, и этот элемент конфигурации также можно рассматривать как переключатель FastCGI. Его можно настроить только в подмодуле местоположения, то есть в месте расположения должен быть указан путь или условие для использования FastCGI.
Он имеет только один параметр, который мы изучили ранее и который можно использовать. 127.0.0.1:9000
Эту форму порта также можно использовать unix:/var/sock/php-fpm/www.sock
эта форма. в начале PHP-FPM Подробная инструкция есть в статье. Вообще говоря, при использовании этой машины необходимо UnixSocket Эта форма лучше, ведь нет необходимости проходить запрос на подключение. И вообще мало кто будет Nginx и PHP-FPM Отдельно, даже для балансировки нагрузки, он напрямую проксируется на каждый хост. Nginx в порту. Поэтому рекомендуется родной Nginx+PHP Попробуйте использовать все комбинации UnixSocket 。
Кроме того, этот адрес сервера также может представлять собой группу серверов, которые будут запрашиваться циклическим образом, аналогично конфигурации балансировки нагрузки по умолчанию, но опять же, так мало кто играет. Мы также изучим подробный восходящий модуль балансировки нагрузки позже, в основном давайте посмотрим на него.
Параметр адреса также может содержать переменные, и если адрес указан как доменное имя, то имя ищется в описанной группе серверов, а если не найдено, для его определения используется резолвер.
существовать $fastcgi_script_name
К значению переменнаяиз добавляется строка существования, оканчивающаяся косой чертой из. URI Имя файла после.
fastcgi_index name;
На самом деле, самый распространенный среди всех index Это то же самое, за исключением index соединен с root или alias за путем, и эта конфигурация объединяет указанный файл по умолчанию с файлом, заканчивающимся косой чертой fastcgi_script_name за переменной. Откуда эта переменная? Это FastCGI среди uri Переменная, которая является нашим запросом URI 。
$fastcgi_script_name
просить URI, если URI заканчивается косой чертой, есть характер просить fastcgi_index Инструкция Конфигурация Ис к нему добавляется имя индексного файла из УРИ. Эта переменная доступна для настройки OK PHP Название среднего скриптаиз SCRIPT_FILENAME и PATH_TRANSLATED параметр. Например, просить Конфигурация /php/ путь, плюс вышеизложенное FactCGI Конфигурация。location /php/ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/www/html1/php$fastcgi_script_name;
include fastcgi_params;
}
тогда запроси /php/info/ , то фактический доступ fastcgi_script_name То есть /php/info/ , полный SCRIPT_FILENAME Путь /home/www/html1/php/info/ и, наконец, добавьте fastcgi_index настройка, которая предназначена для fastcgi_script_name , так что на самом деле fastcgi_script_name Содержание /php/info/index.php . окончательный, полный доступ к файлу. /home/www/html1/php/info/index.php 。
Следует отметить, что если мы посетим статическую страницу, мы все равно зайдем root или alias Да, не пойду FastCGI по настроенному пути. Более того, как упоминалось в предыдущей статье, SCRIPT_FILENAME Указанный путь должен быть абсолютным путем, который также легко ошибиться.
Устанавливает параметры, которые должны быть переданы на сервер FastCGI.
fastcgi_param parameter value [if_not_empty];
Значения по умолчанию нет, но его можно Конфигурациясуществовать. http、server、location в модуле. его value Значения могут содержать текст, переменные и их комбинации. тогда и только тогда, когда на текущем уровне нет определения fastcgi_param директивы, эти директивы наследуются от вышестоящего уровня конфигурации. Вообще говоря, PHP Основные из них, которые необходимы, это эти два.
fastcgi_param SCRIPT_FILENAME /home/www/scripts/php$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
SCRIPT_FILENAME Излишне говорить, что PHP-FPM Чтобы выполнить файл, вам нужно посмотреть на него. Но в нашем конфигурационном файле не написано следующее QUERY_STRING Да, обратите внимание, fastcgi_param Еще ниже include файл. Давайте откроем этот файл и посмотрим.
// vim /etc/nginx/fastcgi_params
fastcgi_param QUERY_STRING $query_string; #проситьиз Параметры, например?app=123;
fastcgi_param REQUEST_METHOD $request_method; #проситьизметод(GET,POST)
fastcgi_param CONTENT_TYPE $content_type; Поле #проситьизContent-Type в шапке
fastcgi_param CONTENT_LENGTH $content_length; #проситьиз Поле Content-length в шапке
fastcgi_param SCRIPT_NAME $fastcgi_script_name; #имя сценария
fastcgi_param REQUEST_URI $request_uri; #проситьиз Адрес без параметров
fastcgi_param DOCUMENT_URI $document_uri; #и$uri то же самое
fastcgi_param DOCUMENT_ROOT $document_root; #Веб-сайт из корневого каталога. Укажите значение из в корневой команде в существующей конфигурации сервера.
fastcgi_param SERVER_PROTOCOL $server_protocol; #просить использует протокол из, обычно HTTP/1.0 или HTTP/1.1
fastcgi_param REQUEST_SCHEME $scheme; #проситьпротокол http/https
fastcgi_param HTTPS $https if_not_empty; # Стоит ли использовать https
fastcgi_param GATEWAY_INTERFACE CGI/1.1; #cgi Версия
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; #nginx Версия Число,Изменяемый、скрывать
fastcgi_param REMOTE_ADDR $remote_addr; #IP-клиента
fastcgi_param REMOTE_PORT $remote_port; #Клиентский порт
fastcgi_param SERVER_ADDR $server_addr; #IP-адрес сервера
fastcgi_param SERVER_PORT $server_port; #Порт сервера
fastcgi_param SERVER_NAME $server_name; #Имя сервера, указанное в доменном имени существующийserverКонфигурацияизserver_name
# PHP only, required if PHP was built with --enable-force-cgi-redirect
fastcgi_param REDIRECT_STATUS 200; # только PHP Доступно, если при компиляции PHP используется --enable-force-cgi-redirect. команде параметр REDIRECT_STATUS должен передать 200.
Понимаете, на самом деле это так Nginx Для нас подготовлена куча Конфигурации. Эти вещи мы существуем PHP из $_SERVER можно получить в. Например, добавим один, существующий вне location Добавьте его, постарайтесь не оставлять это значение по умолчанию. fastcgi_params Файл конфигурации. Значение, которое необходимо изменить, также можно последовательно перезаписать и изменить. Обязательно измените оригинал этого fastcgi_params С файлами тоже все в порядке, потому что есть еще и дефолтный fastcgi_params.default документальное совещаниесуществоватьэтоиз В том же каталоге,Если такого файла нет, то,Не забудьте сделать резервную копию.
location ~ \.php$ {
………………
include fastcgi_params;
fastcgi_param os_PPP "zyblog"; # Новое добавлено из
fastcgi_param SERVER_SOFTWARE nnn; # Перезаписать исходное значение nginx/1.23.0 ,становиться nnn
}
Прописные и строчные буквы допустимы, подойдет и обычное соглашение об именах переменных. Тогда существовать php Распечатать в файле $_SERVER
,Вы можете увидеть информацию о новой Конфигурации.
Array
(
………………
[os_PPP] => zyblog
………………
[SERVER_SOFTWARE] => nnn
………………
)
Когда раньше мы говорили о командной строке, мы упоминали, что если она запускается из командной строки php Печать файлов из _SERVER пройти phpcgi а также Nginx、Apache Печать отличается от других, теперь вы это знаете _SERVER Откуда взялись параметры?
Еще следует отметить, что,заголовок Тулииз,существовать PHP из $_SERVER
Середина основана на HTTP_
Начало из того же, Конфигурация Nginx из FastCGI также имеет отдельный заголовок просить.,Мы узнаем это позже.
существуютдефолтная изконфигурация, есть еще одна if_not_empty необязательный параметр, используемый для указания того, что если значение не существует, оно будет отправлено на CGI в процессе. В приведенном выше примере мы не включили HTTPS доступ,таксуществовать PHP Средний, HTTPS 也不会существовать $_SERVER
отображается в.
Сегодняшний контент очень краткий, но самое главное FastCGI из Конфигурация Мы все узнали. Фактически, сейчас существуют нормальные из динамических LNMP Архитектура в из N и P Часть его уже построена. использовать Nginx строить PHP Среда очень простая и удобная? Это тоже? PHP существовать Доиз Web2.0 Времена могут быть такими популярными. весь LNMP Среда не отличается особой сложностью, есть множество установок в один клик. Инструмент «Панель также» может помочь нам создать всю онлайн-среду разработки за считанные минуты.
Кроме FastCGI снаружи ,Nginx Также предоставлено uwsgi ,То есть Python а также Python Платформа обычно использует тип протокола связи. PHP Этого также можно достичь посредством uwsgi и Nginx China Unicom, но это ненужно, в обычных обстоятельствах никто так не делает, PHP-FPM Предоставить из FastCGI Это уже стандарт де-факто. Если вы настаиваете на игре, вам необходимо установить дополнительные расширения операционной системы. также Экологическая поддержка, а также обучение uwsgi Соответствующие знания. Следовательно, существовать HTTP В модуле мы не стараемся изо всех сил учиться uwsgi Сопутствующий модуль из инструкции по настройке, ведь мы стандартно из PHPer . (это из команды FastCGI из очень похож и имеет схожие функции)
Кроме того, существующие scgi-модули не пишутся отдельно, они все похожи.
Существует множество других команд, связанных с FastCGI.,Мы продолжим учиться,Не переключайте каналы случайно в это время.,Давайте двигаться дальше вместе!
Справочная документация:
http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html