Что такое правильные правила расположения nginx, чтобы сопоставить только первый элемент пути в URI с исполняемым файлом CGI? - PullRequest
3 голосов
/ 09 октября 2010

Я использую веб-модуль FreePascal, разработанный для apache cgi-bin с nginx.

Сам CGI называется spidersample.cgi и содержит такие модули, как привет, пока и т. Д.

Если в Apache вызывается spidersample.cgi / hello , spidersample.cgi выполняется и передает управление подпрограмме hello, которая в нем содержится.

С помощью nginx вместо выполнения spidersample.cgi он обрабатывает spidersample.cgi / hello как значение hello файла в spidersample.cgi и возвращается с ошибкой 404. Поскольку такого каталога нет.

Я подозреваю, что это легко решаемая проблема с некоторыми правилами перезаписи в файле конфигурации, и она размещена ниже.

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

server {listen 8118;имя_сервера localhost;access_log /var/log/nginx/sysman_access.log;index index.html;root / 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;
    }

}

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

1 Ответ

0 голосов
/ 15 июня 2011

location ~ .cgi $ будет соответствовать spidersample.cgi // $ означает конец строки

spidersample.cgi / hello match location ~ (. +) Cgi / hello или (. +) Cgi (. *)

...