一旦您将 DNS 设置为将 app-one.com 和 app-two.com 都指向 myserver.com 的 IP 地址,那么您需要设置一些东西来路由从端口 80(或 443,如果您要使用 SSL)到您的每个应用程序。这通常通过Apache 或nginx 中的虚拟主机完成。
如果您需要在同一个 Python 进程中运行这两个应用程序(无论您是否使用非 Python 网络服务器作为您的应用程序容器),那么您需要手动分派到每个应用程序:
from werkzeug.exceptions import NotImplemented
from werkzeug.wsgi import get_host
class DomainDispatcher(object):
"""Simple domain dispatch"""
def __init__(self, domain_handlers, default_handler=None):
self.domain_handlers = domain_handlers
self.default_handler = domain_handlers.get("default", default_handler)
if self.default_handler is None:
self.default_handler = NotImplemented()
def __call__(self, environ, start_response):
host = get_host(environ)
handler = self.domain_handlers.get(host, self.default_handler)
return handler(environ, start_response)
使用示例:
from app_one import app as app1
from app_two import app as app2
from domain_dispatcher import DomainDispatcher
dispatcher = DomainDispatcher({'app-one.com': app1, 'app-two.com': app2})
if __name__ == '__main__':
# Wrap dispatcher in a WSGI container
# such as CherryPy