我正在使用为Nginx的Apache cgi-bin设计的FreePascal Web模块。

CGI本身称为spidersample.cgi,包含诸如hello,bye等模块。

对于Apache,当调用spidersample.cgi / hello时,spidersample.cgi被执行,并将控制权传递给它包含的hello子例程。

使用nginx而不是执行spidersample.cgi时,会将spidersample.cgi / hello视为spidersample.cgi目录中的hello文件,并返回404错误,因为没有该目录。

我怀疑这是一个容易解决的问题,在配置文件中有一些重写规则,该问题发布在下面。

============================================

服务器{
听8118;
server_name localhost;
access_log /var/log/nginx/sysman_access.log;
索引index.html;
根目录/ home / rchurch / Data / Lazarus / CgiApps;

    location ~ \.cgi$ {
            include /etc/nginx/fastcgi_params;
            fastcgi_pass unix:/tmp/sysman_cgi.sock;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_n$
            fastcgi_param  QUERY_STRING     $query_string;
            fastcgi_param  REQUEST_METHOD   $request_method;
            fastcgi_param  CONTENT_TYPE     $content_type;
            fastcgi_param  CONTENT_LENGTH   $content_length;
    }


}

================================================== ================

最佳答案

location〜.cgi $将匹配spidersample.cgi // $表示行尾

spidersample.cgi / hello匹配位置〜(。+)cgi / hello或(。+)cgi(。*)

10-08 14:29