For starters, all the program does is receive requests (as text) over a TCP/IP connection. It replies over the same connection.
So writing a Web server in any language, on any OS is a trivial exercise. (Once you have the ability to read or write TCP/IP.
The program has to accept the input, calculate the output, and send the output.
If the input is just file names, then the program just reads the file and sends it. (Think static site).
The program may parse the file, and process it some more. It "interprets" code inside the file, executes it, and thus transforms the output. Think PHP.
In these cases a generic server fits the bill. Think Apache, IIS, nginx and so on.
The next level up are programs that are compiled. They generate the output on the fly, often with no, or little, disk interaction. This sort of program often uses a database, but might not. (An online Soduku game for example might do everything in memory.)
Again, any if the above can be built on any OS and written in any language with TCP support.
Here is a very simple example from the original sources: https://github.com/ssg/sozluk-cgi/blob/master/hede.pas
That said, FastCGI and similar technologies were inevitable and something like PHP-FPM isn't much more difficult to actually run in practice.
Still, having a clearly defined request lifecycle in wonderful, especially when compared to something how Java application servers like Tomcat/Glassfish used to work with Servlets - things there have gotten better and easier too, but still...
There is an HTTP server handling all the HTTP stuff and process launching (API gateway in AWS parlance), and the communication between it and the “script” just uses language or OS primitives instead of more complex APIs.
The 2000s were quite wild in how things changed… suddenly you have giant frameworks that also parse HTTP, a reverse proxy. At some point even PHP became all about frameworks.
I wonder if we wouldn’t have a more open, standardized and mature version of CGI/Serverless if it had been a more gradual transition rather than a couple of very abrupt paradigm shifts.