문제

Python3에서 다소 간단한 HTTP 웹 서버를 작성하고 있습니다. 웹 서버는 간단해야합니다. 구성 파일 등의 기본 판독 만 읽습니다. 표준 라이브러리 만 사용하고 있으며 현재는 잘 작동합니다.

이 프로젝트에 대한 요구 사항은 단 하나 뿐이며, 내 자신의 가상 호스트에서는 구현할 수 없습니다. 구성 파일에 정의 된 두 개의 가상 호스트가 있어야합니다. 문제는 파이썬에서 어떻게 구현할 수있는 방법을 찾을 수 없다는 것입니다. 누구든지 가이드, 기사, 아마도 간단한 구현 방법이 있습니까?

도움을 주셔서 감사합니다.

도움이 되었습니까?

해결책

간단한 HTTP 웹 서버의 경우 WSGI 참조 구현:

WSGIREF는 웹 서버 또는 프레임 워크에 WSGI 지원을 추가하는 데 사용할 수있는 WSGI 사양의 참조 구현입니다. WSGI 환경 변수 및 응답 헤더 조작을위한 유틸리티, WSGI 서버 구현을위한 기본 클래스, WSGI 애플리케이션에 서비스를 제공하는 데모 HTTP 서버,...

예제 서버를 확인하려면 수정합니다 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()

다른 팁

가상 호스트는 HTTP 요청에서 호스트 : 헤더를 순종하여 작동합니다.

요청의 헤더를 읽고 호스트의 값을 기준으로 조치를 취하십시오 : 헤더

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top