패스트 CGI

FastCGI

FastCGI는 웹 서버와 인터랙티브 프로그램을 연결하기 위한 바이너리 프로토콜입니다.이것은 이전 Common Gateway Interface(CGI; 공통 게이트웨이 인터페이스)의 변형입니다.Fast CGI의 주된 목적은 웹 서버와 CGI 프로그램 간의 인터페이스와 관련된 오버헤드를 줄이고 서버가 시간 단위당 더 많은 웹 페이지 요청을 처리할 수 있도록 하는 것입니다.

역사

CGI(Common Gateway Interface)는 외부 응용 프로그램을 웹 서버에 인터페이스하기 위한 프로토콜입니다.CGI 응용 프로그램은 개별 프로세스로 실행되며 각 요청 시작 시 생성되고 마지막에 해체됩니다.이 "요청당 하나의 새로운 프로세스" 모델은 CGI 프로그램의 구현을 매우 단순하게 만들지만 효율성과 확장성을 제한합니다.부하가 높으면 프로세스 생성 및 파괴를 위한 운영 체제 오버헤드가 커집니다.또한 CGI 프로세스 모델은 데이터베이스 연결 재사용, 메모리 내 캐시 등의 리소스 재사용 방법을 제한합니다.

CGI의 확장성 단점을 해결하기 위해 Open Market은 Fast CGI를 개발하여 1990년대 중반 웹 서버 제품에 처음 도입하였다.Open Market은 원래 웹 애플리케이션 개발을 위한 Netscape 서버 애플리케이션 프로그래밍 인터페이스(NSAPI)에 대한 경쟁사의 대응으로 FastCGI를 부분적으로 개발했습니다.

FastCGI는 Open Market에 의해 최초로 개발되었지만, 그 후 몇몇 다른 웹 서버 제조업체에 의해 구현되었습니다.그러나 서버-서브프로그램 간 통신 속도를 높이고 단순화하기 위한 다른 방법들과 경쟁했습니다.비슷한 시기에 mod_perl, mod_php 의 Apache HTTP Server 모듈이 등장하여 빠르게 인기를 끌었다.2020년 현재, CGI를 포함한 이러한 다양한 방법들은 모두 공통적으로 사용되고 있다.

구현 상세

FastCGI는 각 요구에 대해 새로운 프로세스를 작성하는 대신 영속적인 프로세스를 사용하여 일련의 요청을 처리합니다.이러한 프로세스는 웹 [1]서버가 아닌 Fast CGI 서버에 의해 소유됩니다.

착신 요구를 처리하기 위해 웹 서버는 Unix 도메인소켓, 이름 있는 파이프 또는 Transmission Control Protocol(TCP) 연결을 통해 환경 변수 정보와 페이지 요청을 FastCGI 프로세스에 전송합니다.응답은 프로세스에서 동일한 연결을 통해 웹 서버로 반환되고 웹 서버는 해당 응답을 최종 사용자에게 전달합니다.응답 종료 시 연결이 닫힐 수 있지만 웹 서버와 Fast CGI 서비스 프로세스는 [2]모두 유지됩니다.

각 Fast CGI 프로세스는 수명 동안 많은 요청을 처리할 수 있으므로 요청별 프로세스 생성 및 종료에 따른 오버헤드를 피할 수 있습니다.여러 요청을 동시에 처리하는 방법은 여러 가지가 있습니다.내부 다중화에 의한 1개의 접속(즉, 1개의 접속을 통한 복수의 요구)을 사용하는 경우, 복수의 접속을 사용하는 경우, 또는 이러한 방법을 혼재하는 경우입니다.복수의 Fast CGI 서버를 설정할 수 있기 때문에 안정성과 확장성이 향상됩니다.

웹 사이트 관리자 및 프로그래머는 Fast CGI에서 웹 응용 프로그램을 웹 서버에서 분리하는 것이 내장된 인터프리터(mod_perl, mod_php 등)보다 많은 이점이 있음을 알 수 있습니다.이 분리를 통해 서버와 애플리케이션 프로세스를 개별적으로 재시작할 수 있습니다.이는 사용량이 많은 웹 사이트에 중요한 고려 사항입니다.또, ISP나 Web 호스팅 기업에 [3]있어서 중요한 요건인 애플리케이션 단위의 호스팅 서비스 시큐러티 정책의 실장도 가능하게 합니다.이러한 유형의 요청을 효율적으로 처리하기 위해 설치된 특정 Fast CGI 서버에 다양한 유형의 수신 요청을 배포할 수 있습니다.

Fast CGI를 구현하는 웹 서버

주의: Fast CGI 구현의 완전성은 명시되지 않은 한 알 수 없습니다.

API 언어 바인딩

Fast CGI는 네트워크 소켓을 지원하는 모든 언어로 구현할 수 있습니다."Fast CGI는 구현이 아닌 프로토콜이기 때문에 어떤 언어에도 엄격하게 구속되지 않습니다.Application Programming Interface(API; 응용 프로그램프로그래밍 인터페이스)[18]다음과 같습니다.

Ruby on Rails, Catalyst, Django, Kepler, Plack 의 최신 프레임워크에서는 임베디드 인터프리터(mod_ruby, mod_perl, mod_python 또는 mod_lua 등) 또는 Fast CGI를 사용할 수 있습니다.

레퍼런스

  1. ^ "FastCGI Specification". Open Market, Inc. 1996. Archived from the original on 19 January 2016.
  2. ^ "FastCGI:A High-Performance Web Server Interface". Open Market, Inc. 1996. Archived from the original on 1 October 2010.
  3. ^ Heinlein, Paul (1 November 1998). "FastCGI: Persistent Applications for Your Web Server". Linux Journal. Retrieved 4 October 2010.
  4. ^ Fast CGI 아파치 모듈 mod_fcgid
  5. ^ Debian 버그 #450748: TCP/IP Fast CGI 서버 지원을 추가하십시오.
  6. ^ Apache 2.4 및 PHP-FPM 관련 문제
  7. ^ 기뚜브에 얹은 리파체모드패스트기
  8. ^ "FastCGI – The Forgotten Treasure/ Section 2.3". Archived from the original on 2010-02-08. Retrieved 2006-02-21.
  9. ^ Caddy 사용자 가이드– Fast CGI
  10. ^ Fast CGI for Cherokey
  11. ^ Hiawatha용 Fast CGI 사용법
  12. ^ a b Jetty에서의 Fast CGI 지원
  13. ^ Lighttpd용 Fast CGI
  14. ^ "FastCGI Extension for IIS6.0 – RTM". FastCGI for IIS. Microsoft. 2008-02-28. Retrieved 2008-02-29.
  15. ^ "FastCGI Nginx module ngx_http_fastcgi_module". nginx.org. NGINX, Inc. Retrieved 20 June 2021.
  16. ^ OpenBSD의 httpd(8) 초기 커밋
  17. ^ "Archived copy". Archived from the original on 2018-01-21. Retrieved 2016-09-19.{{cite web}}: CS1 maint: 제목으로 아카이브된 복사(링크)
  18. ^ 응용 프로그램 라이브러리, 개발 키트
  19. ^ 마트레스카
  20. ^ ExtPascal
  21. ^ Common Lisp에서 Fast CGI를 사용하는 방법
  22. ^ 괴나 에펠
  23. ^ fast CGI 프로토콜을 구현하는 Java Servlet인 jFast CGI
  24. ^ node-fastcgi npm 패키지
  25. ^ Perl에는 FCGI(C로 작성된 컴파일된 모듈), FCGI의 여러 가지 Fast CGI 모듈이 있습니다.: Async(비동기 Fast CGI 응용 프로그램의 경우), AnyEvent:FCGI(AnyEvent 기반 애플리케이션용), FCGI::EV(EV 기반 애플리케이션용), CGI::Fast(FastCGI용 Perl CGI 유사 인터페이스), FCGI:Client(FastCGI 클라이언트 라이브러리) 및 Net:FastCGI(FastCGI 메시지를 빌드 및 해석하는 상수 및 함수).
  26. ^ "PHP: FastCGI Process Manager (FPM) - Manual".
  27. ^ HHVM을 통한 고속 CGI
  28. ^ 리스너 실장은 fastcgi이고 fastcgi-client는 클라이언트 실장입니다.
  29. ^ REAL Studio Web Edition, Wayback Machine에서 Fast CGI Archived 2011-02-08을 통해애플리케이션 구축

외부 링크