【问题标题】:How do I test multiple domains setup in AppEngine locally?如何在本地测试 AppEngine 中的多个域设置?
【发布时间】:2011-07-23 11:11:30
【问题描述】:

在问题Working with subdomain in google app engine中,建议使用以下代码。

applications = {
  'product.example.com': webapp.WSGIApplication([
    ('/', IndexHandler),
    ('/(.*)', ProductHandler)]),
  'user.example.com': webapp.WSGIApplication([
    ('/', IndexHandler),
    ('/(.*)', UserHandler)]),
}

def main():
  run_wsgi_app(applications[os.environ['HTTP_HOST']])

if __name__ == '__main__':
  main()

我的问题是如何在本地进行测试?当我在本地测试它时,主机是“localhost:8080”而不是任何域。

【问题讨论】:

    标签: google-app-engine dns subdomain multiple-domains


    【解决方案1】:

    在您的 Hosts 文件中创建两个新条目:

    127.0.0.1       product.example.com
    127.0.0.1       user.example.com
    

    并在默认的 Http 端口 80 上运行本地 GAE 应用程序。

    如果由于某种原因,您无法在端口 80 上运行 GAE,您可以尝试修改您的 application.py 以匹配本地端口号,如下所示:

    if os.environ['SERVER_SOFTWARE'].startswith('Dev'):
        PORT=':8080'
    else:
        PORT=''
    
    applications = {
      'product.example.com%s' % PORT: webapp.WSGIApplication([
        ('/', IndexHandler),
        ('/(.*)', ProductHandler)]),
      'user.example.com%s' % PORT: webapp.WSGIApplication([
        ('/', IndexHandler),
        ('/(.*)', UserHandler)]),
    }
    

    或者像这样更好地修改主函数(感谢@Nick的评论):

    def main():
      run_wsgi_app(applications[os.environ['HTTP_HOST'].split(':')[0]])
    

    您应该准备好使用以下地址测试您的本地应用程序:
    http://product.example.com:8080
    http://user.example.com:8080

    记得切换回您的 Hosts 文件才能访问生产服务器。

    【讨论】:

    • ...或者您可以在设置主机文件条目后转到product.example.com:8080
    • @Nick 不,你不能。 Hosts 文件不允许指定端口信息并且.. 指向 product.example.com:8080 与任何 WSGIApplication 都不匹配。
    • @systempuntoout 我忘记了 HTTP_HOST 包含端口号。不过,更好的方法是在匹配标头之前从标头中删除端口号。
    • @Nick 这将是另一个可行的解决方案;虽然我不太确定它在生产中是否允许。
    • @systempuntoout 呃?为什么不呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 2018-03-26
    • 2010-11-09
    • 2011-03-11
    • 1970-01-01
    相关资源
    最近更新 更多