Для простого веб-сервера HTTP вы можете начать с эталонной реализации WSGI :
wsgiref - это эталонная реализация спецификации WSGI, которую можно использовать для добавления поддержки WSGI на веб-сервер или платформу. Он предоставляет утилиты для управления переменными среды WSGI и заголовками ответов, базовые классы для реализации серверов WSGI, демонстрационный HTTP-сервер, обслуживающий приложения WSGI , ...
Изменение примера сервера для проверки заголовка HTTP_HOST
, вот простое приложение, которое в зависимости от виртуального хоста отвечает другим текстом. (Расширение примера использования файла конфигурации оставлено в качестве упражнения).
import wsgiref
from wsgiref.simple_server import make_server
def my_app(environ,start_response):
from io import StringIO
stdout = StringIO()
host = environ["HTTP_HOST"].split(":")[0]
if host == "127.0.0.1":
print("This is virtual host 1", file=stdout)
elif host == "localhost":
print("This is virtual host 2", file=stdout)
else:
print("Unknown virtual host", file=stdout)
print("Hello world!", file=stdout)
print(file=stdout)
start_response(b"200 OK", [(b'Content-Type',b'text/plain; charset=utf-8')])
return [stdout.getvalue().encode("utf-8")]
def test1():
httpd = make_server('', 8000, my_app)
print("Serving HTTP on port 8000...")
# Respond to requests until process is killed
httpd.serve_forever()