FastCGI
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
FastCGI는 CGI(Common Gateway Interface)의 확장성 문제를 해결하기 위해 개발된 프로토콜이다. 웹 서버와 웹 애플리케이션 간의 통신을 개선하여, 각 요청마다 새로운 프로세스를 생성하는 대신 지속적인 프로세스를 사용한다. 웹 서버와 애플리케이션을 분리하여 서버 및 애플리케이션 프로세스를 독립적으로 재시작할 수 있으며, 다양한 웹 서버에서 구현되어 사용되고 있다. FastCGI는 프로토콜일 뿐 구현체가 아니므로, 다양한 프로그래밍 언어로 구현 가능하다.
더 읽어볼만한 페이지
- 웹 기술 - 공용 게이트웨이 인터페이스
공용 게이트웨이 인터페이스(CGI)는 웹 서버가 외부 프로그램을 실행하기 위한 표준 인터페이스이며, 웹 서버가 클라이언트 요청에 응답하여 프로그램을 실행하고 그 결과를 클라이언트에 전송하는 방식으로 동작한다. - 웹 기술 - WebAuthn
WebAuthn은 웹 인증 워킹 그룹에서 개발한 웹 인증 표준으로, 기존 비밀번호 인증의 취약점을 해결하고 피싱 공격 등을 방지하며, FIDO2의 일부로서 웹사이트와 사용자 인증 장치 간 안전한 인증을 제공하지만, 일부 암호화 방식의 보안 취약점과 표준 개발 방식에 대한 비판도 있다. - 월드 와이드 웹 - 구글
구글은 래리 페이지와 세르게이 브린이 개발한 웹 검색 엔진에서 출발하여 검색 기술 혁신을 통해 유튜브, 안드로이드 등 다양한 서비스를 제공하는 세계적인 기술 기업으로 성장했지만, 개인정보보호 및 독점 논란에도 직면하고 있다. - 월드 와이드 웹 - 온라인 언론
온라인 언론은 인터넷을 통해 뉴스 및 정보를 제공하며, 디지털 기술 발달과 함께 성장하여 시민 저널리즘 부상, 정보 전달 속도 혁신 등의 특징을 보이지만 정보 신뢰성 문제, 전통 언론 쇠퇴 등의 과제를 안고 있다.
| FastCGI | |
|---|---|
| 일반 정보 | |
![]() | |
| 유형 | 바이너리 프로토콜 |
| 계층 | 애플리케이션 계층 |
| 포트 | 9000 (표준) |
| 상태 | 활성 |
| 기술 세부 사항 | |
| 기반 | HTTP 유사 |
| 설계 목표 | CGI의 오버헤드 감소 |
| 사용 사례 | 웹 서버와 애플리케이션 서버 간의 인터페이스 |
| 개발 및 표준 | |
| 개발자 | Open Market |
| 최신 버전 | 1.0 |
| 관련 기술 | |
| 관련 프로토콜 | SCGI |
| 대체 기술 | HTTP CGI SPDY WebSocket |
2. 역사
공용 게이트웨이 인터페이스(CGI)는 외부 애플리케이션이 웹 서버와 상호 작용할 수 있도록 하는 인터페이스 규격이다. CGI 애플리케이션은 각 요청이 시작될 때 생성되고 요청이 끝나면 제거되는 별도의 프로세스에서 실행된다. 이러한 "요청당 하나의 새 프로세스" 방식은 CGI 프로그램 구현을 단순하게 만들지만, 효율성과 확장성을 제한하는 단점이 있다. 특히 높은 부하 상태에서는 프로세스를 생성하고 제거하는 데 따르는 운영 체제의 오버헤드가 상당하다. 또한, CGI 프로세스 모델은 데이터베이스 연결 재사용이나 인메모리 캐싱 같은 리소스 재사용 기법을 활용하기 어렵게 만든다.
FastCGI는 요청마다 새로운 프로세스를 생성하는 대신 영구적인 프로세스를 사용하여 일련의 요청을 처리한다. 이러한 프로세스는 웹 서버가 아닌 FastCGI 서버가 소유하고 있다.[31]
FastCGI는 여러 웹 서버에서 구현되어 사용되고 있다. 별도로 명시하지 않는 한, 각 웹 서버의 FastCGI 구현 완전성은 알려지지 않았다.
CGI의 이러한 확장성 문제를 해결하기 위해 오픈 마켓(Open Market)은 FastCGI를 개발하여 1990년대 중반 자사의 웹 서버 제품에 처음 도입했다. 오픈 마켓은 본래 FastCGI를 웹 애플리케이션 개발을 위한 넷스케이프(Netscape)의 독점적인 인 프로세스 응용 프로그래밍 인터페이스(API)인 넷스케이프 서버 응용 프로그래밍 인터페이스(NSAPI)에 대한 경쟁 기술로 개발했다.
FastCGI는 처음에는 오픈 마켓에서 개발되었지만, 이후 여러 다른 웹 서버 제조사에서도 구현되었다. 그러나 FastCGI는 서버와 하위 프로그램 간의 통신을 가속화하고 단순화하는 다른 방법들과 경쟁해야 했다. 아파치 HTTP 서버의 모듈인 mod_perl과 mod_php 등이 비슷한 시기에 등장하여 빠르게 인기를 얻었다. 현재에도 CGI를 포함한 이러한 다양한 방식들이 널리 사용되고 있다.
3. 구현 세부 사항
수신된 요청을 처리하기 위해 웹 서버는 환경 변수 정보와 페이지 요청을 유닉스 도메인 소켓, 명명된 파이프, 또는 전송 제어 프로토콜(TCP) 연결 중 하나를 통해 FastCGI 프로세스에 전송한다. 응답은 동일한 연결을 통해 프로세스에서 웹 서버로 반환되며, 웹 서버는 해당 응답을 최종 사용자에게 전달한다. 응답 마지막에 연결이 닫힐 수 있지만, 웹 서버와 FastCGI 서비스 프로세스 모두 존속한다.[32]
개별 FastCGI 프로세스는 존속 기간 동안 많은 요청을 처리할 수 있으므로, 요청마다 프로세스의 생성과 종료 오버헤드를 피할 수 있다. 여러 요청을 동시에 처리하는 방법에는 여러 가지가 있다. 하나의 연결을 내부 다중화(즉, 하나의 연결로 여러 요청)를 사용하여 처리하거나, 여러 연결을 사용하거나, 이러한 방법의 조합을 사용할 수 있다. 여러 FastCGI 서버를 구성할 수 있으므로, 안정성과 확장성이 향상된다.
웹사이트 관리자와 프로그래머는 FastCGI로 웹 서버에서 웹 애플리케이션을 분리하면, 내장 인터프리터(mod_perl나 mod_php 등)에 비해 많은 이점이 있다. 이 분리를 통해 서버 프로세스와 애플리케이션 프로세스를 개별적으로 재시작할 수 있다. 이는 트래픽이 많은 웹사이트에 중요한 고려 사항이다. 또한, ISP나 웹 호스팅 회사에 중요한 요구 사항인 애플리케이션별 호스팅 서비스 보안 정책의 구현도 가능하다.[33] 다양한 유형의 수신 요청을 해당 유형의 요청을 효율적으로 처리하도록 구성된 특정 FastCGI 서버에 배포할 수 있다.
4. FastCGI를 구현하는 웹 서버
5. FastCGI API 바인딩 언어
FastCGI는 네트워크 소켓을 지원하는 어떤 프로그래밍 언어로든 구현할 수 있다. 이는 FastCGI가 특정 구현 방식이 아닌 프로토콜이기 때문에 특정 언어에 종속되지 않기 때문이다. 다양한 언어를 위한 응용 프로그래밍 인터페이스(API) 바인딩이 존재한다.[47]
다음은 FastCGI API 바인딩이 존재하는 언어 목록이다:
- 에이다[48]
- 델파이, 라자루스, 프리 파스칼[49]
- C, C++
- 치킨 Scheme
- 커먼 리스프[50]
- D
- 에펠[51]
- 얼랭
- GnuCOBOL
- Go
- Guile Scheme
- 하스켈
- HP BASIC for OpenVMS
- 자바[52][43]
- 루아
- Node.js[53]
- OCaml
- 펄[54]
- PHP (PHP-FPM[55] 또는 HipHop for PHP[56]을 통해)
- 파이썬
- 루비
- 러스트[57]
- SmartEiffel
- 스몰토크: FasTalk, Dolphin Smalltalk
- Tcl
- WebDNA
- 발라 (C 바인딩을 통해)
- Xojo (이전 Realbasic, REAL Studio)[58]
루비 온 레일즈, 카탈리스트, 장고, 케플러, Plack와 같은 최신 웹 프레임워크들은 웹 서버에 내장된 인터프리터(mod_ruby, mod_perl, mod_python, mod_lua 등) 또는 FastCGI를 함께 사용할 수 있다.
반면, 셸 스크립트는 FastCGI를 적용하기 어려운 대표적인 경우이다. 일부 셸 구현체는 POSIX 표준 외 확장 기능으로 네트워크 소켓을 제한적으로 지원하기도 하지만, 언어 자체의 제약이 크고 구현이 복잡하여 공식적인 API 바인딩이 없다. 또한, FastCGI는 요청마다 새로운 프로세스를 생성하는 대신 기존 프로세스를 재활용하여 오버헤드를 줄이는 것을 목표로 한다. 하지만 셸 스크립트는 여러 외부 명령어를 호출하며 다수의 프로세스를 생성하는 방식으로 동작하는 경우가 많다. 따라서 설령 셸 스크립트에서 FastCGI를 사용한다 하더라도, 요청당 프로세스 생성을 단지 하나 줄이는 정도에 그쳐 FastCGI의 성능 향상 효과를 거의 기대하기 어렵다.
참조
[1]
웹사이트
FastCGI Specification
http://www.fastcgi.c[...]
[2]
웹사이트
FastCGI:A High-Performance Web Server Interface
http://www.fastcgi.c[...]
[3]
웹사이트
FastCGI: Persistent Applications for Your Web Server
http://www.linuxjour[...]
2010-10-04
[4]
문서
FastCGI apache module mod_fcgid
http://httpd.apache.[...]
[5]
문서
Debian bug #450748: Please add support for TCP/IP FastCGI servers
http://bugs.debian.o[...]
[6]
문서
Issues with Apache 2.4 and PHP-FPM
https://web.archive.[...]
[7]
문서
libapache-mod-fastcgi on Github
https://github.com/B[...]
[8]
웹사이트
FastCGI – The Forgotten Treasure/ Section 2.3.
http://cryp.to/publi[...]
2006-02-21
[9]
문서
The fastcgi transport — reverse_proxy (Caddyfile directive) — Caddy Documentation
https://caddyserver.[...]
[10]
문서
FastCGI for Cherokee
http://www.cherokee-[...]
[11]
문서
FastCGI howto for Hiawatha
http://www.hiawatha-[...]
[12]
웹사이트
FastCGI Support in Jetty
http://www.eclipse.o[...]
2017-03-23
[13]
문서
FastCGI for Lighttpd
http://trac.lighttpd[...]
[14]
웹사이트
FastCGI Extension for IIS6.0 – RTM
http://www.iis.net/f[...]
Microsoft
2008-02-28
[15]
웹사이트
FastCGI Nginx module ngx_http_fastcgi_module
https://nginx.org/en[...]
NGINX, Inc.
2021-06-20
[16]
문서
OpenBSD's httpd(8) initial commit
http://marc.info/?l=[...]
[17]
웹사이트
Technical sheet
https://www.shimmerc[...]
2016-09-19
[18]
문서
Application Libraries, Development Kits
https://fastcgi-arch[...]
[19]
웹사이트
Matreshka
http://forge.ada-ru.[...]
2011-10-06
[20]
문서
ExtPascal
https://github.com/f[...]
[21]
문서
How to use FastCGI from Common Lisp
http://cliki.net/fas[...]
[22]
문서
Goanna Eiffel
https://svn.eiffel.c[...]
[23]
문서
jFastCGI, a Java Servlet implementing FastCGI protocol
http://jfastcgi.org/
[24]
문서
node-fastcgi npm package
https://www.npmjs.or[...]
[25]
문서
[26]
웹사이트
PHP: FastCGI Process Manager (FPM) - Manual
http://php.net/manua[...]
[27]
문서
FasterCGI with HHVM
http://www.hhvm.com/[...]
[28]
문서
[29]
문서
REAL Studio Web Edition, builds web apps called via FastCGI
http://www.realsoftw[...]
[30]
웹사이트
About FastCGI
http://www.fastcgi.c[...]
Open Market, Rob Saccoccio & others
2012-02-20
[31]
웹사이트
FastCGI Specification {{!}} FastCGI
https://web.archive.[...]
""
2020-04-20
[32]
웹사이트
FastCGI: A High-Performance Web Server Interface {{!}} FastCGI
https://web.archive.[...]
""
2020-04-20
[33]
웹사이트
FastCGI: Persistent Applications for Your Web Server {{!}} Linux Journal
https://www.linuxjou[...]
""
2020-04-20
[34]
웹사이트
mod_fcgid - FastCGI interface module for Apache 2 - The Apache HTTP Server Project
https://httpd.apache[...]
""
2020-04-21
[35]
웹사이트
"#450748 - libapache2-mod-fcgid: Please add support for TCP/IP FastCGI servers - Debian Bug report logs"
https://bugs.debian.[...]
""
2020-04-21
[36]
웹사이트
Issues with Apache 2.4 and PHP-FPM / Daniel He
https://web.archive.[...]
2020-04-21
[37]
웹사이트
GitHub - ByteInternet/libapache-mod-fastcgi: libapache-mod-fastcgi
https://github.com/B[...]
2020-04-21
[38]
웹사이트
FastCGI -- The Forgotten Treasure
https://web.archive.[...]
2020-04-21
[39]
웹사이트
mod_proxy_fcgi - Apache HTTP Server Version 2.4
https://httpd.apache[...]
2020-04-21
[40]
웹사이트
http.fastcgi - Caddy User Guide
https://caddyserver.[...]
2020-04-21
[41]
웹사이트
Cherokee Web Server {{!}} Handler FastCGI {{!}} Cherokee Documentation
https://cherokee-pro[...]
2020-04-21
[42]
웹사이트
HOWTO: Using CGI and FastCGI - Hiawatha webserver
https://www.hiawatha[...]
2020-04-21
[43]
웹사이트
Chapter 17. FastCGI Support
https://www.eclipse.[...]
2020-04-21
[44]
웹사이트
Docs ModFastCGI - Lighttpd - lighty labs
https://redmine.ligh[...]
2020-04-21
[45]
웹사이트
FastCGI for IIS : The Official Microsoft IIS Site
https://www.iis.net/[...]
2020-04-21
[46]
웹사이트
httpd(8) - OpenBSD manual pages
https://man.openbsd.[...]
2020-04-21
[47]
웹사이트
FastCGI.com Archives
https://fastcgi-arch[...]
2020-04-21
[48]
웹사이트
Matreshka
https://forge.ada-ru[...]
2020-04-21
[49]
웹사이트
GitHub - farshadmohajeri/extpascal: Automatically exported from code.google.com/p/extpascal
https://github.com/f[...]
2020-04-21
[50]
웹사이트
CLiki: FastCGI
https://cliki.net/fa[...]
2020-04-21
[51]
웹사이트
goanna - Revision 630: /trunk/goanna
https://svn.eiffel.c[...]
2020-04-21
[52]
웹사이트
jFastCGI - fastCGI clients + servers for Java and all languages on the JVM -
https://jfastcgi.org[...]
2020-04-21
[53]
웹사이트
node-fastcgi - npm
https://www.npmjs.co[...]
2020-04-21
[54]
웹사이트
FCGI - Fast CGI module - metacpan.org
https://metacpan.org[...]
2020-04-21
[55]
웹사이트
PHP: FastCGI Process Manager (FPM) - Manual
https://www.php.net/[...]
2020-04-21
[56]
웹사이트
FasterCGI with HHVM {{!}} HHVM
https://hhvm.com/blo[...]
2020-04-21
[57]
문서
いくつかのRustクレイトが存在する: リスナー実装は
[58]
웹사이트
REAL Software: REAL Studio - das beste Entwicklungswerkzeug für Mac, Windows und Linux
https://web.archive.[...]
2020-04-21
[59]
문서
Caddy User Guide - FastCGI
https://caddyserver.[...]
[60]
문서
FastCGI for Cherokee
http://www.cherokee-[...]
[61]
웹인용
FastCGI HOWTO for Hiawatha
http://www.hiawatha-[...]
2018-01-20
[62]
웹인용
FastCGI Support in Jetty
http://www.eclipse.o[...]
2018-01-20
[63]
문서
FastCGI for Lighttpd
http://trac.lighttpd[...]
[64]
웹인용
FastCGI Extension for IIS6.0 - RTM
http://www.iis.net/f[...]
Microsoft
2008-02-29
[65]
문서
OpenBSD's httpd(8) initial commit
http://marc.info/?l=[...]
[66]
웹인용
보관된 사본
https://www.shimmerc[...]
2018-01-20
[67]
문서
Application Libraries / Development Kits
https://fastcgi-arch[...]
[68]
웹인용
Matreshka
http://forge.ada-ru.[...]
2018-01-20
[69]
문서
ExtPascal
https://github.com/f[...]
[70]
문서
How to use FastCGI from Common Lisp
http://cliki.net/fas[...]
[71]
웹사이트
Goanna Eiffel
https://svn.eiffel.c[...]
[72]
웹사이트
jFastCGI, a Java Servlet implementing FastCGI protocol
http://jfastcgi.org/
[73]
웹사이트
node-fastcgi npm package
https://www.npmjs.or[...]
[74]
웹사이트
FCGI
http://metacpan.org/[...]
[75]
웹사이트
FasterCGI with HHVM
http://www.hhvm.com/[...]
[76]
웹사이트
REAL Studio Web Edition, builds web apps called via FastCGI
http://www.realsoftw[...]
2011-02-08
[77]
웹사이트
danielksb/rust-fcgi
https://github.com/d[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com
