python3 HTTP Webサーバー:仮想ホスト
-
13-09-2019 - |
質問
私はのpython3ではなく、単純なHTTP Webサーバーを書いています。私は唯一の標準ライブラリを使用していますが、今のところ、それはかなりうまく動作設定ファイルからのみ、基本的な読書など - Webサーバはシンプルにする必要があります。
仮想ホスト -私は自分で実装することはできません、このプロジェクトのための唯一の要件は、あります。私は、設定ファイルで定義された少なくとも2つの仮想ホストを、持っている必要があります。問題は、私は、私はPythonでそれらを実装することができますどのような方法を見つけることができないということ、です。誰もがこれを行うことができますか?
すべてのガイド、記事、おそらくいくつかの簡単な実装を持っています私は任意の助けいただければ幸いです。
解決
シンプルなHTTP Webサーバーの場合は、 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()
他のヒント
バーチャルホストは、ホストに従うことによって機能:HTTPリクエストのヘッダを
。ちょうどリクエストのヘッダを読み出し、ホストの値に基づいてアクションを取る:ヘッダ
所属していません StackOverflow