No es del todo complicado. Simplemente depende de su definición de "servidor web".
Es completamente posible ejecutar un "servidor web" en dispositivos tan simples como un microcontrolador.
Consideremos lo que el servidor web mínimo debería hacer. Tendría que generar algo de texto, no necesariamente en HTML para un cliente. Necesitaría saber que una solicitud es una solicitud y responder adecuadamente. Ni siquiera necesitaría conectividad de red si su "cliente" fuera local. Sería un servidor web completamente inútil.
Sería el servidor web equivalente a uno de estos .
Agregar conectividad de red para un cliente (Ethernet es bueno, pero no hay ninguna razón técnica por la que no pueda conectarse a un servidor web que se ejecuta en wifi) y sería mejor poder enrutar desde un cliente.
Un ESP8266 de $ 5 : un microcontrolador barato y mínimo con wifi puede manejar gran parte de eso, y tal vez incluso contenido dinámico básico
Yo uso algo así para compartir archivos rápidamente usando Python. Todavía es completamente posible escribir algo como esto en un microcontrolador o incluso ejecutarlo en un teléfono.
El contenido estático es aburrido. Agregue lenguajes dinámicos y necesitará comenzar a pensar en sistemas más pesados. Las cosas que ejecutan Linux o Windows son agradables.
En este punto, estás hablando de enrutadores de consumo, pequeñas aplicaciones que usan páginas web en la interfaz de usuario y todo eso.
Un servidor web ni siquiera es un problema complejo y puede escribirse en cinco líneas de bash y ejecutarse en Linux. Now doom ... Pero cualquier sistema que pueda ejecutar doom puede ejecutar un servidor web.
Una buena configuración de servidor web capaz de manejar una carga dada es algo más complicada.