在Google App Engine上禁用Node JS的默认域https:// [project-id] .appspot.com

时间:2017-06-04 11:53:41

标签: node.js google-app-engine google-cloud-platform

我已将我的Node JS应用程序部署到Google Cloud App Engine上,我可以成功为我的应用程序添加自定义域名。

假设我的自定义域名为 example.com

现在我可以通过example.com& www.example.com ,它按预期工作。但我发现我仍然可以通过默认域浏览我的应用。 https://[project-id].appspot.com

我想禁用默认域名,是否可以这样做?

3 个答案:

答案 0 :(得分:1)

您无法禁用该默认域。您必须编写重定向脚本。您可以在请求的HTTP_HOST中测试“appspot”,并在请求的HTTP_USER_AGENT中测试“AppEngine-Google”,以确定它是否是内部请求。

此外,内部函数(如cron作业和任务队列)在该域上运行,因此请小心操作。给定301,任务队列将失败。

答案 1 :(得分:1)

在考虑了GAEfan建议之后,我对路由器逻辑做了一些改变。如果主机名以“appspot.com”结尾,而用户代理包含在“AppEngine-Google”中,则会重定向到我的自定义域。

router.get('/', function(req, res, next) {
    if(req.get("host").endsWith(GOOGLE_APP_SPOT) && 
        req.get("User-Agent").includes(GOOGLE_USER_AGENT))
    {
        var redirectURL =  url.format({
            protocol: req.protocol,
            host: CUSTOM_DOMAIN,
            pathname: req.originalUrl
        });
        res.redirect(redirectURL);
    }

    res.render('templateName', viewModel);
});

答案 2 :(得分:1)

您只需使用App Engine中的dispatch.yaml文件即可,只列出您的所有域名,但不列出*.appspot.com域名。当您尝试访问时,Google会显示404路线。

编辑:不再可能,请查看评论。

结帐official reference