0

複数のサブドメインで複数のサイトにサービスを提供する Web サーバーを起動しようとしています。私は webapp2 と貼り付けで Pythen を使用しています。私のサーバーは、サーバーに静的IPアドレスを割り当て、ポート80を転送するルーターの背後にあります。ルーター自体には、ISPによって割り当てられた静的IPアドレスがないため、DDNSを使用しています(example.dlinkddns.comとしましょう)。私のフォルダー階層では、各フォルダーはサブドメインを表し、Python モジュールです。

このような:

server/app.py
server/www
  server/www/__init__.py
server/test
  server/test/__init__.py

www.mydomain.com および test.mydomain.com 経由でアクセスできる必要があります。 *.mydomain.com を example.dlinkddns.com の CNAME に設定します

これは server/app.py です:

import sys
import os

import webapp2
from webapp2_extras import routes

from paste import httpserver

DOMAIN = 'mydomain.com'

class Fallback(webapp2.RequestHandler):
    def get(self, *args, **kw):
        self.response.write('Fallback...\n'+str(args)+'\n'+str(kw))

def main():
    dirs = [name for name in os.listdir(".") if os.path.isdir(name)]
    dirs.remove('env') # folder created by package virtualenv - needed for paste

    rs = []
    for subdomain in dirs:
        # import subdomain package
        exec('import '+subdomain)
        # add routes defined for subdomain
        exec('rs += [routes.DomainRoute("'+subdomain+'.'+DOMAIN+'", '+subdomain+'.routes)]')
    rs += [routes.DomainRoute("<domain:.*>",[webapp2.Route('/<:.*>',Fallback,name='fallback')])]

    app = webapp2.WSGIApplication(rs)   

    httpserver.serve(app, host='0.0.0.0', port='80')  


if __name__ == '__main__':
    main()

そして、これは私の www パッケージがどのように見えるかです:

__init__.py
import webapp2

class MainMain(webapp2.RequestHandler):
    def get(self,target):
        self.response.write('Hello, webapp2! www.mydomain.com at:'+target)

routes = [
    webapp2.Route('/<target>', handler=MainMain, name='main-main')
]

問題は、www.mydomain.com にアクセスすると、フォールバック ハンドラーは一致しているように見えますが、MainMain ハンドラーは一致するはずです。出力は

Fallback... () {'domain':'0.0.0.0'}.

アプリがドメインをまったく認識しないようです。example.dlinkddns.com にアクセスしても同じことが起こります。フォールバックハンドラーなしでも試してみましたが、すべてのルートとすべてのドメインの404ページしか表示されませんでした...

私もサーバーを起動しようとしました

httpserver.serve(app, host='192.168.178.33', port='80')

これは、LAN 内のサーバーに割り当てられた静的 IP アドレスです。出力は次のように変わります

Fallback... () {'domain':'192.168.178.33'}.

私は何を間違っていますか?助けてくれてありがとう!

4

0 に答える 0