我正在使用为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(。*)