Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 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-възраст=0.@HTTP_SEC_CH_UA"Хром"; v="92", " не a; Бранд"; 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 image).
Следващ:E45: 'readonly' option is set (add ! to override)
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com