【问题标题】:What does localhost:1337 become in production?localhost:1337 在生产中会变成什么?
【发布时间】:2019-09-06 16:14:54
【问题描述】:

我确信这个问题非常基础,但让我感到困惑。 目前在开发模式下,我的后端在 localhost:1337 中运行(准确地说是使用 Strapi cms)。 但是当网站部署到网络服务器时会变成什么?

具体来说,网站会驻留在子目录而不是根目录下,会不会影响这个?

目前,这是我在项目中用作图像 src 的 url: localhost:1337/uploads/image-example.jpg

我试图了解项目部署后的新 url,更重要的是它部署在子目录中而不是根目录中

提前致谢

【问题讨论】:

  • 您打算如何部署到 Web 服务器?
  • 与 Heruko。我知道它仍然是strapi cms,但目前我正在使用这个url作为图像src:localhost:1337/uploads/image.jpg 我试图了解部署后的新url是什么?更重要的是,该网站不会驻留在根目录中,而是位于子文件夹中谢谢
  • 在 Heroku 中,URL localhost:1337 变为 appname.herokuapp.com。您的图片网址会相应更改。如果您希望将您的应用程序放在子文件夹中,Heroku 不推荐它,作为一种解决方法,this 可能会有所帮助。
  • @Prasad 我认为该页面正在讨论您的 git 存储库的目录,而不是 URL 路径。

标签: node.js backend strapi


【解决方案1】:

你不应该做任何事情。

大多数(如果不是全部)Web 主机使用PORT 环境变量来配置应用程序服务器。我刚刚通过 Strapi 进行了快速代码搜索,发现 this:

"port": "${process.env.PORT || 1337}",

读取环境变量或使用默认值(而不是使用0 请求随机端口,以便在开发时进行预测)。如果您使用他们的启动脚本,我会假设您的应用程序也有相同的。

在许多情况下,这已经足够了,但有两个例外。

  1. 如果您的应用程序服务器不知道其 URL,它只能生成相对 URL。例如,它将无法撰写包含指向其自身的链接的电子邮件。

    HTTP 重定向曾经需要一个绝对 URL,but that has since been amended

  2. 仅设置端口假定应用程序将安装在/ 上。例如,如果您正在配置自己的 Web 服务器(而不是 Heroku),并且希望将应用程序挂载到 /blog,则需要某种方式告诉应用程序,以便它可以在路径上放置正确的前缀。

    可以通过将 URL 限制为仅相对路径来解决此问题,但这听起来很乏味,我认为通常不会这样做。而且传入的请求实际上没有足够的信息来识别用户正在查看的 URL。相反,您会带外显示应用的 URL。

    例如,Grafana has a root_url variable 在您放置完整 URL 前缀的配置文件中,Prometheus takes a -web.external-url argument

    但是,我认为 Heroku 不能将您的应用程序挂载到除/之外的任何位置,因此端口应该足够了。

这是一个在 Heroku 上运行并向您展示其环境的完整服务器:

const app = require("express")();

app.set("json spaces", 2);

app.get("/", (req, res) => {
  res.send(process.env);
});

const server = app.listen(process.env.PORT, () => {
  console.log('server is up on', server.address());
});

PORT 变量就是它需要的所有配置;环境不包含应用名称。

硬编码应用的生产 URL 可能会成为维护负担,因此如果您最终要教应用的 URL 是什么,请确保它保持可配置使用命令行参数或环境变量。

所以要具体回答您的问题,您的图片 src 应以 /uploads 开头。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-01
    • 2017-01-22
    • 2016-03-01
    • 1970-01-01
    • 2015-03-14
    • 1970-01-01
    • 2015-12-02
    • 1970-01-01
    相关资源
    最近更新 更多