Диспетчер виртуальных хостов Cherrypy 3.2 - PullRequest
3 голосов
/ 29 июня 2011

Я пытаюсь заставить виртуальный хост работать в cherrypy 3.2.0, работающем на python 3:

#!/usr/bin/env python

import cherrypy
from cherrypy import expose

class Root(object):

    @expose
    def index(self):
        return "I am the root  vhost"

class Foo(object):

    @expose
    def index(self):
        return "I am testingdomain.com"

class Bar(object):

    @expose
    def index(self):
        return "I am testingdomain2.com."

def main():

    cherrypy.config.update({'server.socket_host': 'rootdomain.com',
            'server.socket_port': 80,
    })

    conf = {
        "/": {
            "request.dispatch": cherrypy.dispatch.VirtualHost(
            **{
                "testingdomain.com:8000": "/foo",
                "testingdomain2.com:8000": "/bar"
            })
        }
    }

    root = Root()
    root.foo = Foo()
    root.bar = Bar()
    cherrypy.tree.mount(root, "", conf)

    #cherrypy.quickstart()
    cherrypy.engine.start()
    cherrypy.engine.block()

if __name__ == "__main__":
    main()

Я получил тестируемые домены в / etc / hosts.При запросе они корректно направляются на сервер.Но единственная страница, которую я получил, - Root, даже если я захожу на testingdomain.com или testingdomain2.com.

Может кто-нибудь помочь мне?

1 Ответ

2 голосов
/ 29 июня 2011

Порты, которые они показывают в документах cherrypy, имеют значения, отличные от '80'.curl по крайней мере, не добавляет номера портов в заголовок запроса Host, если порт 80;Я подозреваю, что cherrypy.dispatch.VirtualHost недостаточно умен, чтобы сопоставить заголовок хоста example.com на порту 80 с example.com:80 или наоборот.Я бы, вероятно, сопоставил оба хоста (с номерами портов и без них) в конфигурации на случай, если необычный заголовок хоста случится по сети.

...