[Nginx19] Обучение Nginx: базовая конфигурация модуля FastCGI (1)
[Nginx19] Обучение Nginx: базовая конфигурация модуля FastCGI (1)

Обучение Nginx: базовая конфигурация модуля FastCGI (1)

Все внимание было уделено этому, наконец-то оно здесь FastCGI . Более 80% крупных людей, которые читают мои статьи и видео, PHPer Давай, сделай это PHP ,FastCGI Конфигурация обязательна. компьютерная графика 、FastCGI 、PHP-FPM Эти концепции мы разработали давным-давно Узнайте о PHP-FPMhttps://mp.weixin.qq.com/s/NUpDnfYfbPuWmal4Am3lsg Об этом узнал из этой статьи. Друзья, которые не помнят, могут вернуться и посмотреть. Если вам кажется, что это слишком просто, вы также можете поискать соответствующую информацию самостоятельно.

Полное имя модуля FastCGI — ngx_http_fastcgi_module, он включен в исходный код ядра и не требует отдельной компиляции.

Базовая конфигурация

Давайте возьмем пример из нашей первой статьи о базовом модуле HTTP. Самая простая конфигурация выглядит следующим образом.

Язык кода:javascript
копировать
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_pass

Установите адрес сервера FastCGI.

Язык кода:javascript
копировать
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_index

существовать $fastcgi_script_name К значению переменнаяиз добавляется строка существования, оканчивающаяся косой чертой из. URI Имя файла после.

Язык кода:javascript
копировать
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 Конфигурация。
Язык кода:javascript
копировать
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_param

Устанавливает параметры, которые должны быть переданы на сервер FastCGI.

Язык кода:javascript
копировать
fastcgi_param parameter value [if_not_empty];

Значения по умолчанию нет, но его можно Конфигурациясуществовать. http、server、location в модуле. его value Значения могут содержать текст, переменные и их комбинации. тогда и только тогда, когда на текущем уровне нет определения fastcgi_param директивы, эти директивы наследуются от вышестоящего уровня конфигурации. Вообще говоря, PHP Основные из них, которые необходимы, это эти два.

Язык кода:javascript
копировать
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 файл. Давайте откроем этот файл и посмотрим.

Язык кода:javascript
копировать
// 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 документальное совещаниесуществоватьэтоиз В том же каталоге,Если такого файла нет, то,Не забудьте сделать резервную копию.

Язык кода:javascript
копировать
location ~ \.php$ {
    ………………
    include        fastcgi_params;
    fastcgi_param os_PPP "zyblog"; # Новое добавлено из
    fastcgi_param SERVER_SOFTWARE nnn; # Перезаписать исходное значение nginx/1.23.0 ,становиться nnn
}

Прописные и строчные буквы допустимы, подойдет и обычное соглашение об именах переменных. Тогда существовать php Распечатать в файле $_SERVER,Вы можете увидеть информацию о новой Конфигурации.

Язык кода:javascript
копировать
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

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose