OpenBSD nginx cgi
Page content
	
… and you thought that cgi is dead …
nginx.conf
cat << 'EOF' > /etc/nginx/nginx.conf
worker_processes  1;
worker_rlimit_nofile 1024;
events {
    worker_connections  800;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    index         index.html index.htm;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  logs/access.log  main;
    access_log  syslog:server=unix:/dev/log,severity=notice main;
    keepalive_timeout  65;
    server_tokens off;
    server {
        listen       80;
        listen       [::]:80;
        server_name  localhost;
        root         /var/www/htdocs;
        # FastCGI to CGI wrapper server
        #
        location /cgi-bin/ {
            #error_log     /var/log/slowcgi/errors;
            fastcgi_pass   unix:run/slowcgi.sock;
            fastcgi_split_path_info ^(/cgi-bin/[^/]+)(.*);
            fastcgi_param  PATH_INFO $fastcgi_path_info;
            include        fastcgi_params;
        }
    }
}
'EOF'
chmod 644 /etc/nginx/nginx.conf
rcctl enable nginx
rcctl start nginx
Slowcgi
rcctl enable slowcgi
rcctl start slowcgi
CGI
cat << 'EOF' > /var/www/cgi-bin/test.cgi
#!/bin/sh
echo "Content-type: text/html\n\n";
echo "<HTML>\n";
echo "<HEAD>\n";
echo "  <title>Ich bin ein Titel :)</title>\n";
echo "</HEAD>\n";
echo "Test from /bin/sh ..!\n";
echo "</HTML>\n";
EOF
chown www /var/www/cgi-bin/test.cgi
chmod 500 /var/www/cgi-bin/test.cgi
Install Interpreter (Chrooted !)
mkdir /var/www/bin/
cp /bin/sh /var/www/bin/
Test
curl http://ip-of-device/cgi-bin/test.cgi
Troubleshoot
chroot /var/www/ cgi-bin/test.cgi
Any Comments ?
sha256: cb939fe359ec8b8611392b03c702d42de819c4a51b81c120a70fe4a8d7ff6770