跳转到内容

Local TLS

本地 TLS

本指南目前仅在使用 Classic Remix 编译器 时相关。

在本地使用 HTTP 更简单,但如果您确实需要在本地使用 HTTPS,请按照以下方法操作。

<文档警告>

remix-serve 不支持本地 HTTPS,因为它只是一个帮助您入门的最小服务器。 remix-serve 是 Express 的一个简单包装器,因此如果您想在本地使用 HTTPS,可以直接使用 Express。

如果您在运行没有使用-c标志的remix dev,则您隐式地使用remix-serve作为您的应用服务器。

使用本地 TLS 运行你的应用服务器

第一步是让您的应用服务器使用本地 TLS 运行,而无需运行remix dev。 这将为您在下一节中使用本地 TLS 设置remix dev时取得成功做好准备。

👉 安装 mkcert

👉创建本地证书颁发机构:

Terminal window
mkcert -install

👉 告诉 Node 使用我们的本地 CA:

Terminal window
export NODE_EXTRA_CA_CERTS="$(mkcert -CAROOT)/rootCA.pem"

👉创建 TLS 密钥和证书:

Terminal window
mkcert -key-file key.pem -cert-file cert.pem localhost

<文档信息>

如果您使用自定义主机名,则可以在生成 TLS 密钥和证书时将localhost更改为其他内容。

👉 使用key.pemcert.pem使 HTTPS 与您的应用服务器在本地协同工作。

如何执行此操作取决于您使用的应用服务器。 例如,以下是如何在 Express 服务器上使用 HTTPS:

server.ts
import fs from "node:fs";
import https from "node:https";
import path from "node:path";
import express from "express";
const BUILD_DIR = path.resolve(__dirname, "build");
const build = require(BUILD_DIR);
const app = express();
// ... code setting up your express app goes here ...
const server = https.createServer(
{
key: fs.readFileSync("path/to/key.pem"),
cert: fs.readFileSync("path/to/cert.pem"),
},
app
);
const port = 3000;
server.listen(port, () => {
// ... code to run after your server is running goes here ...
});

👉 使用本地 TLS 运行你的应用服务器

例如,使用上面的 Express 服务器,您可以像这样运行它:

Terminal window
remix build
node ./server.js

使用本地 TLS 运行remix dev

首先确保您可以在没有remix dev的情况下使用本地 TLS 运行您的应用! 如果您还没有这样做,请查看上一节。

👉 为 remix dev 启用 TLS

通过配置:

remix.config.js
/** @type {import('@remix-run/dev').AppConfig} */
module.exports = {
dev: {
tlsKey: "key.pem", // relative to cwd
tlsCert: "cert.pem", // relative to cwd
},
};

或者通过标志:

Terminal window
remix dev --tls-key=key.pem --tls-cert=cert.pem -c "node ./server.js"

您的应用现在应该使用本地 TLS 运行!