Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 9877|Відповідь: 0

Протокол nginx fastcgi_pass коротко введено та протестовано

[Копіювати посилання]
Опубліковано 2021-11-16 22:16:20 | | | |
NGinX зазвичай надсилає запити до процесу управління FastCGI для обробки, наприклад, сайт PHP, PHP-FPM є реалізацією протоколу FastCGI, гіпервізора, який керує PHP-CGI. Ось блок-схема:



CGI означає «Common Gateway Interface» — інструмент, який дозволяє HTTP-серверам «спілкуватися» з програмами на ваших або інших машинах, і їхні програми мають працювати на веб-сервері.

Недоліки CGI: Коли кожен запит вводиться, CGI форкує новий процес, а потім візьмемо PHP як приклад, кожен запит займає значну кількість пам'яті, тому при запуску він буде повністю GG.

Щоб вирішити цю проблему, було створено fastCGI.

FastCGI — це як довговічна CGI, його можна запускати постійно, якщо він активований, не потрібно часу на форк щоразу (це найбільш критикуваний режим fork-and-execute у CGI). Він також підтримує розподілені обчислення, що означає, що програми FastCGI можуть запускатися на хостах, відмінних від веб-сервера, і приймати запити з інших веб-серверів.
Тест

Створіть новий php-файл у каталогу D:\dev_tools\nginx-1.20.0\html\php, щоб запобігти повідомленням nginx про помилку 404, якщо файл не знайдено, наступним чином:



Nginx fastcgi_pass налаштований наступним чином:



Дані, які передає nginx fastcgi_pass, потрібно аналізувати відповідно до протоколу FastCGIЯкщо вам цікаво, можете дізнатися, я використовую sokit тут, щоб увімкнути TCP-прослуховування для простого прийому, спробуйте скористатися браузером для доступу:http://127.0.0.1:22229/itsvse.php, як показано на рисунку нижче:



22:06:07 DAT ---> [TCP] 127.0.0.1:1032 <1136> ..................... B.... QUERY_STRING.. REQUEST_METHODGET.. CONTENT_TYPE.. CONTENT_LENGTH.. SCRIPT_NAME/itsvse.php.. REQUEST_URI/itsvse.php.. DOCUMENT_URI/itsvse.php." DOCUMENT_ROOTD:/dev_tools/nginx-1.20.0/html/php.. SERVER_PROTOCOLHTTP/1.1..REQUEST_SCHEMEhttp.. GATEWAY_INTERFACECGI/1.1..SERVER_SOFTWAREnginx/1.20.0..REMOTE_ADDR127.0.0.1.. REMOTE_PORT1025.. SERVER_ADDR127.0.0.1.. SERVER_PORT22229.. SERVER_NAME.. REDIRECT_STATUS200.. HTTP_HOST127.0.0.1:22229..HTTP_CONNECTIONkeep-живий.. HTTP_CACHE_CONTROLmax-age=0.@HTTP_SEC_CH_UA"Хром"; v="92", " не A; Brand"; v="99", "Google Chrome"; v="92".. HTTP_SEC_CH_UA_MOBILE?0..HTTP_UPGRADE_INSECURE_REQUESTS1.sHTTP_USER_AGENTMozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, як Gecko) Chrome/92.0.4515.131 Safari/537.36.....HTTP_ACCEPTtext/html,application/xhtml+xml,application/xml; q=0.9,image/avif,image/webp,image/apng,*/*; q=0.8, заявка/підписаний обмін; v=b3; q=0.9..HTTP_SEC_FETCH_SITEnone.. HTTP_SEC_FETCH_MODEnavigate.. HTTP_SEC_FETCH_USER?1..HTTP_SEC_FETCH_DESTdocument.. HTTP_ACCEPT_ENCODINGgzip, здувайте, брате... HTTP_ACCEPT_LANGUAGEzh-CN,zh; q=0,9,en; q=0,8......................
(Кінець)




Попередній:Встановіть curl на основі Debian (образ docker).
Наступний:E45: 'readonly' option is set (add ! to override)
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com