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.com
和 sauce.darrellsilver.com
上创建 Heroku 应用程序,您应该在两个独立的 Git 存储库中设置两个独立的 Flask 应用程序。
值得一提的是,当我在 Heroku 上使用 Flask 切换到 SSL 端点时遇到了 404 个问题。我所要做的就是将 app.config "SERVER_NAME" 从之前的 "CUSTOMENDPOINTNAME.herokuapp.com" 更改为新的 "www.CUSTOMENDPOINTNAME.com" 地址。
我正在尝试在 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.com
和 sauce.darrellsilver.com
上创建 Heroku 应用程序,您应该在两个独立的 Git 存储库中设置两个独立的 Flask 应用程序。
值得一提的是,当我在 Heroku 上使用 Flask 切换到 SSL 端点时遇到了 404 个问题。我所要做的就是将 app.config "SERVER_NAME" 从之前的 "CUSTOMENDPOINTNAME.herokuapp.com" 更改为新的 "www.CUSTOMENDPOINTNAME.com" 地址。