localhost:1337 在生产中会变成什么?
What does localhost:1337 become in production?
我确定这个问题非常基础,但让我感到困惑。
目前处于开发模式,我的后端在 localhost:1337 中运行(准确地说是使用 Strapi cms)。
但是当网站部署到网络服务器上会变成什么呢?
具体来说,网站将驻留在子目录中,而不是在根目录中,这会影响吗?
目前这是一个 url 我在我的项目内部使用图像 src:
localhost:1337/uploads/image-example.jpg
我想了解什么是新的 url 项目部署后,而且它部署在子目录中而不是根目录中
提前致谢
你不应该做任何事情。
大多数(如果不是全部)Web 主机使用 PORT
环境变量来配置应用程序服务器。我刚刚通过 Strapi 进行了快速代码搜索,发现 this:
"port": "${process.env.PORT || 1337}",
读取环境变量或使用默认值(而不是使用 0
请求随机端口,以便在开发时实现可预测性)。如果您使用他们的启动脚本,我会假设您的应用程序具有相同的。
在很多情况下,这就足够了,但有两个例外。
如果你的应用服务器不知道它的URL,它只能生成相对的URL。例如,它无法撰写包含 link 给自己的电子邮件。
HTTP 重定向需要绝对 URL 曾几何时,but that has since been amended.
仅设置端口假定应用程序将安装在 /
上。例如,如果您正在配置自己的 Web 服务器(而不是 Heroku),并且您希望将应用程序挂载到 /blog
,您将需要一些方法来告诉您的应用程序,以便它可以将正确的前缀放在路径。
可能可以通过将 URLs 限制为仅相对路径来解决这个问题,但这听起来很乏味,而且我认为通常不会这样做。传入请求实际上没有足够的信息来辨别用户正在查看的 URL。相反,您在带外向您的应用显示 URL。
例如Grafanahas a root_url
variable in its config file where you put the full URL prefix, 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
.
开头
我确定这个问题非常基础,但让我感到困惑。 目前处于开发模式,我的后端在 localhost:1337 中运行(准确地说是使用 Strapi cms)。 但是当网站部署到网络服务器上会变成什么呢?
具体来说,网站将驻留在子目录中,而不是在根目录中,这会影响吗?
目前这是一个 url 我在我的项目内部使用图像 src: localhost:1337/uploads/image-example.jpg
我想了解什么是新的 url 项目部署后,而且它部署在子目录中而不是根目录中
提前致谢
你不应该做任何事情。
大多数(如果不是全部)Web 主机使用 PORT
环境变量来配置应用程序服务器。我刚刚通过 Strapi 进行了快速代码搜索,发现 this:
"port": "${process.env.PORT || 1337}",
读取环境变量或使用默认值(而不是使用 0
请求随机端口,以便在开发时实现可预测性)。如果您使用他们的启动脚本,我会假设您的应用程序具有相同的。
在很多情况下,这就足够了,但有两个例外。
如果你的应用服务器不知道它的URL,它只能生成相对的URL。例如,它无法撰写包含 link 给自己的电子邮件。
HTTP 重定向需要绝对 URL 曾几何时,but that has since been amended.
仅设置端口假定应用程序将安装在
/
上。例如,如果您正在配置自己的 Web 服务器(而不是 Heroku),并且您希望将应用程序挂载到/blog
,您将需要一些方法来告诉您的应用程序,以便它可以将正确的前缀放在路径。可能可以通过将 URLs 限制为仅相对路径来解决这个问题,但这听起来很乏味,而且我认为通常不会这样做。传入请求实际上没有足够的信息来辨别用户正在查看的 URL。相反,您在带外向您的应用显示 URL。
例如Grafanahas a
root_url
variable in its config file where you put the full URL prefix, 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
.