>  Q&A  >  본문

web - CGI가 있는데 왜 Nginx가 필요한가요?

정보를 검토한 결과 전반적으로 이해가 되었습니다. 정정해 주시기 바랍니다.

웹사이트는 다음과 같은 업무 분업으로 컴퓨터에서 운영됩니다.

으아아아

위의 이해가 맞다면 Nginx가 존재하는 이유는 무엇입니까? Nginx가 없어도 CGI를 사용하여 직접 요청을 수락할 수 있는 것 같으니

감사합니다.

漂亮男人漂亮男人2712일 전660

모든 응답(7)나는 대답할 것이다

  • ringa_lee

    ringa_lee2017-05-16 17:29:17

    게 악마. 一请法儿
    먼저 CGI와 WebServer가 서로를 대체할 수 없는 이유는 무엇입니까?로 질문을 수정하세요. CGI는 표준이고 Nginx는 애플리케이션이기 때문입니다. 둘은 동일하지 않으므로 아래에서는 Nginx 대신 WebServer를 사용합니다. 为什么CGI与WebServer不能互相替代? 因为CGI是一种标准,Nginx则是一种应用。两者不是同类,所以下面用WebServer代替Nginx

    CGI是一种标准,Nginx则是一种应用。
    浏览器的角度来看,浏览器只负责发送请求,接收来自WebServer的返回结果并渲染之。对于WebServer来讲,它需要做的仅仅是接收请求,寻找浏览器请求的文件并且发送回去。如果仅仅是这样,世界就很完美了。
    但是后来发生的事情大家都知道了。。我们不光要浏览静态网页,我们还要登陆论坛、发帖骂人灌水踩答案点赞刷声望等等。这些行为是静态的Html没法完成的。所以有了JS、Flash等等基于前端的交互技术。WebServer把包含了这些代码的文件发给浏览器,后者把它解析称它应该有的样子(或者不应该有的样子,比如IE6),我们可以在页面上看看动画什么的,这些称之为前段交互技术。
    但是有些交互前端做不了, 比如我上次发了一个高清无码套图,我要看到大家的反应,点个赞啊楼主好人啊之类的,那么这个技术就要用到数据库,但是数据库本身是需要另外一种语言来操作的,这种语言可以是python、prel、Ruby、PHP等等,我们称之为动态语言。他们对数据库进行增删查改四大操作,并且返回结果给WebServer,后者再传给浏览器。

    由于有很多动态语言和很多种Web服务器,他们彼此之间互不兼容,给程序员造成了很大的麻烦。那么,CGI应运而僧。CGI的定义是统一网关接口。从此WebServer收到后台动态交互请求就直接发给CGI,CGI发给动态语言,动态语言把结果发回给CGICGI再发回给WebServer,后面的事情你都清楚了。。。。

    那么结论就是,CGI是一个翻译层,它的功能不是直接提供结果给浏览器,而是翻译来自WebServer的请求并转给后台的应用程序,并且把执行结果翻译成静态网页返回给WebServer

    CGI는 표준이고 Nginx는 애플리케이션입니다.

    브라우저의 관점에서 볼 때 브라우저는 요청을 보내고 WebServer에서 반환 결과를 수신하고 렌더링하는 역할만 담당합니다. WebServer의 경우 요청을 수신하고 Browser에서 요청한 파일을 찾아서 다시 보내기만 하면 됩니다. 이것만 있다면 세상은 완벽할 것이다.

    하지만 다음에 무슨 일이 일어났는지 모두가 알고 있습니다. . 우리는 정적인 웹 페이지를 탐색해야 할 뿐만 아니라 포럼에 로그인하고, 욕설을 게시하고, 답변에 반대 투표를 하고, 평판을 얻어야 합니다. 이러한 동작은 정적 Html로는 수행할 수 없습니다. JS, Flash 및 기타 프런트엔드 기반 대화형 기술이 있습니다. WebServer는 이러한 코드가 포함된 파일을 Browser로 보내고, 브라우저는 이를 어떻게 보여야 하는지(또는 IE6처럼 보여서는 안 되는 모습) 분석합니다. 페이지의 애니메이션 등을 살펴보세요. 이를 프런트엔드 상호작용 기술이라고 합니다. #🎜🎜# 하지만 할 수 없는 인터랙티브 프런트 엔드가 있습니다. 예를 들어 지난번에 고화질 무수정 사진을 올렸는데, 포스터가 정말 좋은 사람인지 등 모든 사람들의 반응을 보고 싶습니다. 데이터베이스를 사용하지만 데이터베이스 자체는 작동하기 위해 다른 언어가 필요한 경우 Python, prel, Ruby, PHP 등이 될 수 있습니다. 우리는 이를 동적 언어라고 부릅니다. 데이터베이스를 추가, 삭제, 확인 및 수정하는 네 가지 주요 작업을 수행하고 결과를 WebServer에 반환한 다음 브라우저에 전달합니다. #🎜🎜# #🎜🎜#동적 언어도 많고, 웹서버 종류도 다양하기 때문에 서로 호환되지 않아 프로그래머들에게 많은 고민을 안겨줍니다. 그러다가 CGI가 탄생했습니다. CGI의 정의는 통합 게이트웨이 인터페이스입니다. 그 이후부터 WebServer는 백그라운드 동적 상호 작용 요청을 받아 CGI로 직접 보냅니다. CGI는 이를 동적 언어로 보내고 동적 언어는 보냅니다. 결과를 CGI, CGI로 다시 보낸 다음 WebServer로 다시 보내면 다음에 무슨 일이 일어날지 알 수 있습니다. . . . #🎜🎜# #🎜🎜#결론은 CGI가 번역 레이어라는 것입니다. 그 기능은 브라우저에 직접 결과를 제공하는 것이 아니라 WebServer의 요청을 번역하여 백그라운드 애플리케이션에 전달하는 것입니다. 실행 결과는 정적 웹 페이지로 변환되어 WebServer로 반환되므로 상호 교환이 불가능합니다. #🎜🎜# #🎜🎜#드디어 급하게 썼는데 표현이 엄밀하지 않은 경우가 많아 댓글 환영합니다. #🎜🎜#

    회신하다
    0
  • 習慣沉默

    習慣沉默2017-05-16 17:29:17

    • 로드밸런싱
    • 역방향 프록시
    • 원활한 업그레이드
    • 확장 재해 복구
    • CGI 언어 유형 숨기기
    • 기록로그
    • gzip

    너무 많아서 생각해보면 위의 내용만큼 긴 nginx의 다른 장점도 나열할 수 있을 것 같습니다

    회신하다
    0
  • 淡淡烟草味

    淡淡烟草味2017-05-16 17:29:17

    브라우저와 웹 서버 간의 통신은 HTTP 프로토콜입니다. 브라우저는 CGI/FastCGI 프로토콜을 지원하지 않기 때문에 Nginx를 버리고 FPM, PHP-CGI 등과 직접 통신하는 것은 불가능합니다.

    회신하다
    0
  • 巴扎黑

    巴扎黑2017-05-16 17:29:17

    Nginx는 본질적으로 웹 서버입니다. CGI를 직접 사용하면 이 CGI가 웹 서버가 되며 논리가 혼란스럽습니다.
    CGI는 동적 논리를 처리하기 위한 것입니다.
    웹 서버는 단지 요청을 받은 다음 로직에 관계없이 해당 응답(일반적으로 HTML 페이지 또는 요청에 따른 기타 파일)으로 응답합니다. 모든 논리적 처리는 CGI에 맡겨집니다. 예를 들어 사용자 로그인 확인 등이 있습니다.

    회신하다
    0
  • 我想大声告诉你

    我想大声告诉你2017-05-16 17:29:17

    Nginx를 메신저라고 생각하시면 됩니다. 주요 업무는 그 사람이 하는 게 아니고 그 사람이 없으면
    실제로 일을 하는 사람들은 직접 가서 일을 줍고 넘겨주는 사람들이다.

    못하는 게 아니라 일하는 사람들이 어떻게 하면 일을 잘할지에만 관심이 있다는 거,
    나는 많은 심부름을 하고 내 기능을 뒤죽박죽으로 만들고 싶지 않습니다.

    회신하다
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-16 17:29:17

    Nginx가 없으면 누구도 당신이 나열한 4가지 사항 중 첫 번째 사항을 수행할 수 없을 것이라고 생각하지 않나요?

    회신하다
    0
  • 漂亮男人

    漂亮男人2017-05-16 17:29:17

    정적 파일은 기본적으로 처리를 위해 nginx로 전달됩니다.
    동적 요청의 경우 nginx는 라우팅 계층과 동일합니다. CGI는 특정 비즈니스 로직 처리에만 집중하면 됩니다.

    회신하다
    0
  • 취소회신하다