apacheで動いていた CGIを nginxに持ってくると動かない。
さて、どうするか? spawn-fcgiと fcgiwrapで動かします。
spawn-fcgiを入れる
# yum install epel-release # yum install spawn-fcgi fcgi-devel
fcgiwrapはソースから入れる
# wget http://github.com/gnosek/fcgiwrap/tarball/master # tar xzvf master # cd gnosek-fcgiwrap-gnosek-fcgiwrap-99c942c # autoreconf -i # ./configure # make # make install
spawn-fcgiの設定を書き込む
# nano /etc/sysconfig/spawn-fcgi OPTIONS="-u nginx -g nginx -a 127.0.0.1 -p 9001 -P /var/run/spawn-fcgi.pid -- /usr/local/sbin/fcgiwrap"
WordPressがメインで入っていることもあって、wp-frontに設定を書いた
# nano /etc/nginx/wp-front # location / { # root /usr/share/nginx/html; # index index.html index.htm index.php index.cgi; # } location ~ \.cgi$ { root /usr/share/nginx/html; fastcgi_pass 127.0.0.1:9001; fastcgi_index index.cgi; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
nginx、php-fpm、spawn-fcgiをリスタート
# rm -rf /var/cache/nginx/proxy_cache/ # service nginx restart # service php-fpm restart # service spawn-fcgi restart
CGIを動作させると、403 Forbiddenが表示される。
cgiファイルに実行権限がなかったので、「その他のユーザ」に実行権(x)を付与。
ついでに、CGI関係のファイルが Shift_JISだったら、
# nano /etc/nginx/conf.d/example.com.conf server { charset shift-jis; }