nginx будет работать через FastCGI c сервером
fcgiwrap, который и будет запускать скрипты через CGI.
Установка и настройка
Дальнейшие действия следует производить от имени root.
Установить серверы:
apt install nginx-full fcgiwrap
Создать файл конфигурации /etc/nginx/fcgiwrap.conf для nginx:
location /cgi-bin/ {
gzip off;
root /var/www;
fastcgi_pass unix:/var/run/fcgiwrap.socket;
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
Создать каталог для cgi-скриптов:
mkdir /var/www/cgi-bin
chmod 755 /var/www/cgi-bin
Добавить в файл конфигурации /etc/nginx/sites-available/default
строку include fcgiwrap.conf;
server {
.....
.....
include fcgiwrap.conf;
}
Включить fcgiwrap и перезапустить nginx:
systemctl enable fcgiwrap
systemctl restart nginx
Проверка
Создать тестовый файл /var/www/cgi-bin/index.cgi:
#!/usr/bin/env python3
print("Content-type: text/html\n")
print("<html>\n<body>")
print("<div style=\"width: 100%; font-size: 40px; font-weight: bold; text-align: center;\">")
print("CGI Script Test Page")
print("</div>")
print("</body>\n</html>")
Сделать файл исполняемым
chmod 705 /var/www/cgi-bin/index.cgi
Проверить можно по ссылке вида http://servername/cgi-bin/index.cgi.
Скрипт не обязательно должен быть на python, можно использовать bash.
#!/bin/bash
printf "Content-type: text/html\r\n"
printf "\r\n"
printf "<html>\n<body>"
echo "<div style=\"width: 100%; font-size: 40px; font-weight: bold; text-align: center;\">"
printf "CGI Script Test Page"
printf "</div>\n"
echo `whoami`
printf "</body>\n</html>\r\n"
Источник: https://www.server-world.info/en/note?os=Debian_11&p=nginx&f=8