브라우저에 웹 링크를 입력하면 브라우저는 HTTP(s)
전송 프로토콜을 기반으로 해당 서버에 요청을 보냅니다. 서버는 해당 요청을 수신하고 프로세스를 전달합니다. , 해당 정보를 브라우저에 반환하면 브라우저는 http
의 내용을 구문 분석하여 웹 페이지 형식으로 표시합니다. HTTP(s)
传输协议向相应的服务器发送一个请求,服务器收到相应的请求后经过处理,返回相应的信息给浏览器,然后由浏览器解析http
中的内容,以网页的形式表现出来。
服务器负责接收请求,并在处理之后返回相应的数据,而其中又可以细分为处理http
连接的服务部分和执行服务内容的应用部分(WordPress
使用PHP
生成需要的页面,就属于应用部分)
而不论应用部分执行的是何种应用,处理http
连接的部分几乎是相同的,所以出现了专门处理http
连接的中间件,目前最常见的是Apache
和Nginx
。
正式名称是“Apache HTTP Server
”,是一款开源的HTTP
服务器中间件,诞生于1995年,曾经是HTTP
服务领域的龙头老大,拥有大量的用户和丰富的社区资源。Apache
的一大优点就是方便与Wordpress
等CMS软件进行集成,只需要简单的设定就能搭建一个基于CMS的网站。
内部构造方面,Apache
采用多进程的方式,每有一个连接就会为这个连接开辟一个进程,专门用于处理这个连接上的请求,直到连接结束。这样做的好处是:
来自不同客户端的连接会立刻得到相应且互不干扰,而且不会因为某一个服务占用了较长的时间而使其它的连接得不到响应。
但是缺点也是显而易见的:
当同时访问数比较多的时候,Apache
会建立大量的进程,占用过多的内存资源。
大量线程间的调度也会造成CPU处理能力的大量浪费。
由此产生了被称为C10K
的难题,C即客户端(Client),10K是指1万,即不论服务器的性能和网络带宽有多高,Apache
都难以同时处理1万个以上的连接。
读作Engine-X
,和Apache
一样也是用于HTTP
服务的开源中间件,诞生于2004年。Nginx
比Apache
的历史要短,但是正因为是后来者,Nginx
吸取了Apache
的教训,在设计初期就考虑到了处理大量连接时的效率问题,解决了诸如C10K
等随着互联网规模壮大而产生的难题。
Nginx
采用了非阻塞IO
和异步消息驱动的方式,即在称作worker
的线程中使用循环来处理队列中的连接请求。而根据硬件的情况,可以设定多个worker
线程,充分利用CPU
的核心资源。
解决了处理大量连接时消耗内存过多,调度效率低下的问题,同时还能充分的利用所有的CPU核心。在相同硬件下处理并发连接的能力是Apache
的10到100倍。
但是Nginx
这种方式也不是没有缺点。
当服务器单核性能较差时,基于CMS的动态网站可能需要较长的时间来执行一个请求,此时来自其他客户端的请求将无法立即被执行。当CPU
核心数较少,worker
线程不足时会更加明显。
好在现在服务器的性能越来越强,在AMD
的带领下CPU
核心数也越来越多,Nginx
的缺点足以被弥补,而高效的优势也愈发显现出来。
Apache Nginx
处理能力有限10-100倍是否会被复杂任务阻塞否有可能会设定难度比较简单相对复杂社区资源丰富相对较少
近年来,Nginx
的市场占有率不断提高,2019年已经达到了和Apache
持平的水平。而对于有极大访问量的大型网站,可以看到访问量越大,Nginx
的占比也就越高。这也从侧面印证了Nginx
在处理大量访问时的优越性能。
Nginx
除了可以作为HTTP服务器使用,其强大的反向代理功能还被广泛地用作负载均衡前端服务器,逐渐取代了基于硬件的负载均衡器。
在Nginx
中可以配置若干个后端服务器,Nginx
在收到HTTP
http
연결을 처리하는 서비스 부분과 서비스 콘텐츠를 실행하는 애플리케이션 부분(WordPress code><code>PHP
를 사용하여 애플리케이션 부분에 속하는 필수 페이지를 생성합니다)🎜🎜어플리케이션 부분이 어떤 종류의 애플리케이션을 실행하든 http
를 처리하는 부분은 연결은 거의 동일하므로 http
연결을 특별히 처리하는 미들웨어가 등장했으며 현재 가장 일반적인 것은 Apache
및 Nginx
입니다. 🎜🎜Apache🎜🎜공식 명칭은 "Apache HTTP Server
"이며, 1995년에 탄생하여 예전에는 였던 오픈소스 <code>HTTP
서버 미들웨어입니다. HTTP많은 사용자와 풍부한 커뮤니티 자원을 보유한 서비스 분야의 선두주자입니다. Apache
의 장점 중 하나는 Wordpress
와 같은 CMS 소프트웨어와 쉽게 통합할 수 있다는 점입니다. 간단한 설정만으로 CMS 기반 웹사이트를 구축할 수 있습니다. 🎜🎜Apache의 내부 처리 모델🎜🎜내부 구조 측면에서 Apache
는 연결이 있을 때마다 이 연결을 위해 특히 요청을 처리하는 데 사용되는 다중 프로세스 접근 방식을 채택합니다. 이 연결이 끝날 때까지. 이것의 장점은 다음과 같습니다: 🎜Apache
A 많은 수의 프로세스가 생성되어 과도한 메모리 리소스를 차지하게 됩니다. 🎜C10K
라는 문제가 발생했습니다. C는 클라이언트를 의미하고 10K는 서버 성능 및 네트워크 대역폭에 관계없이 10,000을 나타냅니다. 아무리 높아도 Apache
가 동시에 10,000개 이상의 연결을 처리하기는 어렵습니다. 🎜🎜Nginx🎜🎜는 Engine-X
로 발음됩니다. Apache
와 마찬가지로 HTTP
서비스를 위한 오픈 소스 미들웨어였습니다. 2004년생. Nginx
는 Apache
에 비해 역사는 짧지만 후발주자이기 때문에 Nginx
는 Apache
의 교훈을 얻었습니다. > 설계 초기에는 많은 수의 연결을 처리하는 데 따른 효율성 문제를 고려하여 인터넷 규모가 커지면서 발생하는 C10K
등의 문제를 해결했습니다. 🎜🎜Nginx의 내부 처리 모델🎜🎜Nginx
는 non-blocking IO
와 비동기식 메시지 기반 메서드, 즉 worker
라는 스레드를 채택합니다. 루프는 대기열의 연결 요청을 처리하는 데 사용됩니다. 하드웨어 조건에 따라 여러 개의 worker
스레드를 설정하여 CPU
의 핵심 리소스를 최대한 활용할 수 있습니다. 🎜Apache
의 10~100배입니다. 🎜Nginx
이 방법에도 단점이 없는 것은 아닙니다. 🎜CPU
코어 수가 적고 worker
스레드가 부족한 경우 더욱 분명해집니다. 🎜AMD
주도 하에 CPU
코어 수는 또한 증가하고 있으며, Nginx는 충분히 보완될 만큼 효율성이 높다는 장점이 점점 더 뚜렷해지고 있습니다. 🎜🎜종합 비교🎜🎜Apache Nginx
는 처리 능력이 10~100배로 제한되어 있습니다. 복잡한 작업에 의해 차단될까요? 난이도를 상대적으로 단순하게 설정할 수 있나요? 🎜🎜최근 몇 년 동안 Nginx
의 시장 점유율이 계속 증가하여 2019년에는 Apache
와 같은 수준에 도달했습니다. 방문수가 많은 대규모 웹사이트의 경우 방문수가 많을수록 Nginx
의 비중이 높아지는 것을 확인할 수 있습니다. 이는 또한 많은 수의 액세스를 처리하는 데 있어 Nginx
의 탁월한 성능을 측면에서도 확인시켜 줍니다. 🎜🎜로드 밸런싱🎜🎜강력한 역방향 프록시 기능은 HTTP 서버로 사용되는 것 외에도 로드 밸런싱 프런트 엔드 서버로도 널리 사용되며 점차 하드웨어 기반 로드 밸런서를 대체합니다. 🎜🎜 Nginx
에서 여러 백엔드 서버를 구성할 수 있습니다. HTTP
요청을 받은 후 Nginx
는 특정 규칙(폴링, IP)을 따릅니다. 임의 우선순위) 등은 요청을 백엔드 서버로 전달하여 여러 서버에서 평균 또는 가중 부하 분산을 달성합니다. 🎜동시에 로드 밸런싱 프런트엔드로서 백엔드에서 반환된 데이터를 캐시하여 백엔드 서버에 대한 부담을 완화할 수도 있습니다. 프런트엔드는 로드 밸런싱을 위해 Nginx
를 사용하여 각 서버에 대한 연결 수를 제한하며, 백엔드 서버가 Apache
를 실행하는 것은 드문 일이 아닙니다. Nginx
做负载均衡限制每个服务器的连接数,后端服务器运行Apache
的模式也并不少见。
硬件负载均衡器的业界大佬F5 networks
在2019年收购了Nginx
,推出了包含收费服务的负载均衡解决方案Nginx+
F5 Networks
는 2019년에 Nginx
를 인수하고 유료 서비스가 포함된 로드 밸런싱 솔루션 Nginx+
를 출시했습니다.> 🎜위 내용은 Apache HTTP 또는 Nginx 중 어떤 엔진이 더 좋습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!