Flask 子域与 Heroku 和 Godaddy(SERVER_NAME 个问题)

Flask Subdomain with Heroku and Godaddy (SERVER_NAME issues)

我正在尝试在 Flask 服务器上设置一个子域,该服务器有一个托管在 Heroku 上的服务器和一个托管在 GoDaddy 上的自定义域。我已验证我的子域在本地工作。子域是我应用程序中的单独蓝图。我在烧瓶中的设置是:

blueprint = Blueprint('blueprint', __name__, template_folder="templates", subdomain="blueprint")

@blueprint.route('/')
def index():
    return "Hello Mate"

然后

app.config['SERVER_NAME'] = os.environ['MY_SERVER_NAME']
from blueprint.views import blueprint
    app.register_blueprint(blueprint)

在我的本地机器上,我在我的主机文件 (/etc/hosts) 中设置了一条自定义记录来测试子域。该文件包含条目:

127.0.0.1 virtual.local
127.0.0.1 blueprint.virtual.local

如果我导航到 blueprint.virtual.local:5000,我会看到预期的结果(一个只显示 Hello Mate 的页面。我相信这证明我的子域设置设置正确,至少在 flask 中是这样。

我将我的代码推送到我的 heroku 应用程序,这就是我开始 运行 遇到问题的地方。我的 heroku 站点以前有一个与之关联的自定义域。我首先为新子域添加一个条目。 运行 heroku domains 在终端给我:

=== myapp Domain Names
blueprint.mysite.com
www.mysite.com
myapp.herokuapp.com
mysite.com

我 运行 遇到的第一个问题是我只能在 heroku URL 或自定义域上查看我的站点。这是 app.config['SERVER_NAME'](我设置它以使我的子域工作)链接到 heroku URL 或我的自定义 URL 的结果。当它设置为 heroku URL 时,我只能在那个 URL 访问它时看到该站点,而当我转到我的自定义域时,我收到 404 错误。当我切换 SERVER_NAME.

的值时,这是相反的

第二个问题是我无法让我的子域在 Heroku 上与 GoDaddy 一起使用。在 GoDaddy 中,我创建了一个 CNAME 记录,将我的子域 (blueprint) 指向我的 heroku 站点 (myapp.herokuapp.com)。这个对吗?每当我访问自定义域 (blueprint.mysite.com) 上的子域时,我都会收到 404 错误。我相信这与第一个问题有关,但我不确定。我是否遗漏了任何步骤?

关于正确设置的任何建议,以便我可以在 Heroku 上使用 Flask 子域,托管在 GoDaddy 的自定义域上?提前致谢!

我怀疑您混淆了 Flask 蓝图和 Heroku 应用程序。一个 flask app(及其包含的 git 存储库,在本例中)是一个且只有一个 Heroku app(单个域,或 subdomian...但至关重要的是,只有其中之一)。

Flask 蓝图是一种将单个 Flask 应用程序的各个部分组织得更加模块化的方法。

要在 awesome.darrellsilver.comsauce.darrellsilver.com 上创建 Heroku 应用程序,您应该在两个独立的 Git 存储库中设置两个独立的 Flask 应用程序。

值得一提的是,当我在 Heroku 上使用 Flask 切换到 SSL 端点时遇到了 404 个问题。我所要做的就是将 app.config "SERVER_NAME" 从之前的 "CUSTOMENDPOINTNAME.herokuapp.com" 更改为新的 "www.CUSTOMENDPOINTNAME.com" 地址。