在nginx下支持cgi脚本于支持node类似的,只要在nginx直接做个转发,转发到对应的cgi套接字就好。

使用Fcgiwrap

Fcgiqwrap是另外一个CGI封装库,跟Simple CGI类似

安装fcgiwrap

apt-get install fcgiwrap

安装以后fcgiwrap默认已经启动,对应的套接字是 /var/run/fcgiwrap.socket 。如果没有启动,使用 /etc/init.d/fcgiwrap 手动启动。

配置nginx的vhost文件

在要支持cgi脚本的路径下,添加对应的server配置。比如所有的cgi都在cgi-bin路径下(现在/monitor/api/下):

	server {
        listen 80;
        server_name www.a.com;
        charset UTF-8;
        access_log /data/logs/www.a.com.log;
        root /data/web/www;


        location / {
          index index.html index.htm test.php;
        }

        location ~ ^/monitor/api/ {
          gzip off;
          fastcgi_pass unix:/var/run/fcgiwrap.socket;
          include /etc/nginx/fastcgi_params;
          fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        }



}

重新加载nginx:

/etc/init.d/nginx reload


web测试页面下载:

https://pan.baidu.com/s/16GGRrXRCY-oUiuXxr6J_xQ
提取码:9t1y

创建文件夹和设置权限

mkdir /data/web/www
mkdir /data/logs
chmod +x /data/web/www/monitor/api/*.sh
chmod 777 /var/run/fcgiwrap.socket

打开页面测试:

http://www.a.com/monitor/

image.png







参考:

https://www.jb51.net/article/106375.htm

https://me.jinchuang.org/archives/114.html