>  기사  >  백엔드 개발  >  nginx+php는 어떻게 요청을 수행합니까? 작동 원리 소개

nginx+php는 어떻게 요청을 수행합니까? 작동 원리 소개

青灯夜游
青灯夜游앞으로
2019-02-26 10:36:512440검색

nginx+php 요청을 수행하는 방법은 무엇입니까? 다음 기사에서는 nginx+php 실행 요청의 작동 원리를 소개합니다. 이는 특정 참조 가치가 있으므로 도움이 필요한 친구가 될 수 있기를 바랍니다.

php 작동 원리

먼저 흔히 듣는 cgi, php-cgi를 이해해보자. fastcgi, php-fpm과 php의 작동 방식을 이해하는 데 도움이 되는 관계는 무엇입니까? 프로토콜은 웹 서버(예: nginx)를 결정하는 데 사용됩니다. 즉, 콘텐츠 배포 서버에서 전달되는 데이터와 데이터 형식은 무엇입니까#🎜 🎜#

php-cgi 프로세스 인터프리터#🎜🎜 #php-cgi는 php의 CGI 프로토콜 프로세스 인터프리터입니다. 시작되면 php.ini 파일을 로드해야 합니다 -> 실행 환경 초기화 -> 요청 처리 ->웹 서버로 콘텐츠 반환->php-cgi 프로세스 종료

# 🎜🎜#

fastcgi 프로토콜

fastcgi 이 프로토콜은 주로 CGI 프로토콜의 효율성 향상을 보완하는 프로토콜입니다. 요청이 올 때마다 cgi 인터프리터 프로세스가 더 이상 웹 서버 요청을 받을 때마다 php.ini를 다시 로드할 필요가 없습니다. #php-fpm 프로세스 관리자

php-fpm은 fastcgi 프로토콜용입니다. 구현은 시작 시 마스터 및 작업자 프로세스를 포함하는 프로세스 관리자입니다. 일반적으로 여러 작업자 프로세스가 있으며 각 작업자 프로세스에는 실행을 위한 CGI 프로세스 인터프리터가 있습니다. 원리

phpfpm을 시작하면 마스터 프로세스가 시작되고 .ini 파일이 로드되고 실행 환경이 초기화되며 여러 작업자 프로세스가 시작됩니다. 요청이 올 때마다 처리를 위해 작업자 프로세스로 전달됩니다

php 원활한 재시작 원칙

#🎜 🎜# php.ini 구성을 수정하고 다시 시작할 때마다 새 작업자 프로세스가 시작되어 새 구성을 로드하며, 작업이 완료된 후 기존 프로세스가 삭제되므로 원활한 다시 시작이 이루어집니다 # 🎜🎜##🎜 🎜#nginx 작동 원리

nginx와 php가 함께 작동하는 방식을 이해하려면 먼저 서버도 이해해야 합니다. nginx 구성 파일의 일부#🎜 🎜#

server {
    listen       80; #监听80端口,接收http请求
    server_name  www.example.com; #一般存放网址,表示配置的哪个项目
    root /home/wwwroot/zensmall/public/; # 存放代码的根目录地址或代码启动入口
    index index.php index.html; #网站默认首页
    
    #当请求网站的url进行location的前缀匹配且最长匹配字符串是该配置项时,按顺序检查文件是否存在,并返回第一个找到的文件
    location / {
          #try_files,按顺序检查文件是否存在,返回第一个找到的文件
          #$uri代表不带请求参数的当前地址
          #$query_string代表请求携带的参数
          try_files   $uri $uri/ /index.php?$query_string; #按顺序检查$uri文件,$uri地址是否存在,如果存在,返回第一个找到的文件;如果都不存在,发起访问/index.php?$query_string的内部请求,该请求会重新匹配到下面的location请求
    }
    
     #当请求网站的php文件的时候,反向代理到php-fpm去处理
    location ~ \.php$ {
          include       fastcgi_params; #引入fastcgi的配置文件
          fastcgi_pass   127.0.0.1:9000; #设置php fastcgi进程监听的IP地址和端口
          fastcgi_index  index.php; #设置首页文件
          fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name; #设置脚本文件请求的路径
    }
}
위 서버 구성의 전반적인 의미는 nginx가 포트 80에서 URL 요청을 수신할 때마다 URL에서 위치 일치를 수행한다는 것입니다. / 규칙이 일치하면 내부 요청이 리디렉션되고 /index.php?$query_string의 내부 요청이 시작되며 해당 위치 구성 규칙은 포트에서 수신 대기 중인 php-fpm의 마스터 프로세스로 요청을 보냅니다. 9000#🎜🎜 #Summary

가장 간단한 사용자 요청 프로세스는 아래에 요약되어 있습니다. #🎜🎜 #사용자 접속 도메인 이름 -> 도메인 이름은 DNS 확인 수행 -> 해당 IP 서버 및 포트에 요청 -> nginx는 해당 포트의 요청을 수신 -> nginx는 URL에서 위치 매칭 수행 -> 실행 일치하는 위치->nginx 아래의 규칙 php->php-fpm의 마스터 프로세스로 요청을 전달합니다. nginx 요청을 수신합니다.->마스터 프로세스는 유휴 작업자 프로세스 중 하나에 요청을 할당합니다.->작업자 프로세스는 다음을 실행합니다. request->worker 프로세스는 실행 결과를 nginx로 반환합니다.- >nginx는 결과를 사용자에게 반환합니다위 내용은 이 글의 전체 내용이므로, 모두의 학습에 도움이 되기를 바랍니다. 더 흥미로운 내용을 보려면 PHP 중국어 웹사이트의 관련 튜토리얼 열을 주의 깊게 살펴보세요! ! !

위 내용은 nginx+php는 어떻게 요청을 수행합니까? 작동 원리 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제