nginx 설정 · 2 min read · Jan 23, 2026
Fedora 18에서 Nginx로 CGI 스크립트 제공 - 페이지 2
3 Fcgiwrap 사용하기
Fcgiwrap은 각 vhost가 자체 cgi-bin 디렉토리를 사용할 수 있도록 해주는 CGI 래퍼로, 공유 호스팅 환경에서 사용할 수 있습니다.
Fedora에 대한 fcgiwrap 패키지가 없기 때문에, 우리는 직접 빌드해야 합니다. 먼저 몇 가지 필수 패키지를 설치합니다:
yum groupinstall 'Development Tools'yum install fcgi-devel이제 다음과 같이 fcgiwrap을 빌드할 수 있습니다:
cd /usr/local/src/
git clone git://github.com/gnosek/fcgiwrap.git
cd fcgiwrap
autoreconf -i
./configure
make
make install이렇게 하면 fcgiwrap이 /usr/local/sbin/fcgiwrap에 설치됩니다.
다음으로, fcgiwrap을 데몬으로 실행할 수 있게 해주는 spawn-fcgi 패키지를 설치합니다:
yum install spawn-fcgi/etc/sysconfig/spawn-fcgi를 엽니다…
vi /etc/sysconfig/spawn-fcgi… 그리고 파일을 다음과 같이 수정합니다:
| # "spawn-fcgi" 서비스가 작동하기 전에 몇 가지 작업 옵션을 설정해야 합니다. # SOCKET이 파일을 가리키면, 이 파일은 init 스크립트에 의해 정리됩니다. # # 가능한 모든 옵션은 spawn-fcgi(1)를 참조하세요. # # 예: #SOCKET=/var/run/php-fcgi.sock #OPTIONS="-u apache -g apache -s $SOCKET -S -M 0600 -C 32 -F 1 -P /var/run/spawn-fcgi.pid -- /usr/bin/php-cgi" FCGI_SOCKET=/var/run/fcgiwrap.socket FCGI_PROGRAM=/usr/local/sbin/fcgiwrap FCGI_USER=nginx FCGI_GROUP=nginx FCGI_EXTRA_OPTIONS="-M 0700" OPTIONS="-u $FCGI_USER -g $FCGI_GROUP -s $FCGI_SOCKET -S $FCGI_EXTRA_OPTIONS -F 1 -P /var/run/spawn-fcgi.pid -- $FCGI_PROGRAM" |
spawn-fcgi의 시스템 시작 링크를 생성합니다…
systemctl enable spawn-fcgi.service… 그리고 다음과 같이 시작합니다:
systemctl start spawn-fcgi.service이제 /var/run/fcgiwrap.socket에서 fcgiwrap 소켓을 찾을 수 있으며, 소유자는 nginx 사용자 및 그룹입니다.
이제 vhost 구성 파일을 엽니다…
vi /etc/nginx/conf.d/www.example.com.vhost… 그리고 server {} 컨테이너에 location /cgi-bin {} 섹션을 추가합니다:
| server { [...] location /cgi-bin/ { # gzip 비활성화 (스크립트가 gzipped되기 전에 완료되어야 하므로 느리게 느껴짐) gzip off; # root를 /usr/lib로 설정 (이 위치 내에서 이는 /usr/lib/cgi-bin 아래의 파일에 대한 액세스를 제공함을 의미) root /var/www/www.example.com; # Fastcgi 소켓 fastcgi_pass unix:/var/run/fcgiwrap.socket; # Fastcgi 매개변수, 표준 매개변수 포함 include /etc/nginx/fastcgi_params; # 비표준 매개변수 조정 (SCRIPT_FILENAME) fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } [...] } |
nginx를 다시 로드합니다:
systemctl reload nginx.service다음으로 cgi-bin 디렉토리 - /var/www/www.example.com/cgi-bin을 생성합니다. 이는 location /cgi-bin {} 컨테이너에서 root /var/www/www.example.com;을 정의했기 때문입니다:
mkdir /var/www/www.example.com/cgi-bin이제 CGI 스크립트를 그 안에 배치하고 실행 가능하게 만듭니다. 테스트 목적으로 작은 Hello World Perl 스크립트를 생성하겠습니다 (hello_world.cgi 대신 .pl 확장자를 사용할 수 있습니다 -> hello_world.pl):
vi /var/www/www.example.com/cgi-bin/hello_world.cgi| #!/usr/bin/perl -w # perl에게 html 헤더를 보내라고 지시합니다. # 그래서 브라우저가 출력을 받습니다 # |Hello world
\n";
chmod 755 /var/www/www.example.com/cgi-bin/hello_world.cgi브라우저를 열고 스크립트를 테스트합니다:
http://www.example.com/cgi-bin/hello_world.cgi모든 것이 잘 진행되면, 다음과 같은 출력을 얻어야 합니다:

4 링크
- Nginx: http://nginx.org/
- Nginx 위키: http://wiki.nginx.org/
- Thttpd: http://acme.com/software/thttpd/
- nginx ThttpdCGI: http://wiki.nginx.org/ThttpdCGI
- nginx Fcgiwrap: http://wiki.nginx.org/Fcgiwrap
저자 소개
Falko Timme는 Timme Hosting(초고속 nginx 웹 호스팅)의 소유자입니다. 그는 HowtoForge의 수석 유지 관리자(2005년부터)이며 ISPConfig의 핵심 개발자 중 한 명(2000년부터)입니다. 그는 또한 O’Reilly의 “Linux System Administration” 책에 기여했습니다.
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.