我怎样才能 运行 一个 Svelte/Sapper 应用超过 HTTPS/SSL?
How can I run a Svelte/Sapper app over HTTPS/SSL?
我似乎无法通过 https 找到任何关于 运行ning Svelte 应用程序的信息。我想在 https 上为开发人员和生产人员 运行。我可以在 package.json 的脚本中使用 --port
参数更改端口,但显然这不会将协议从 http 更改为 https。
目前看来唯一的方法是 运行 在 Svelte/Sapper 应用程序前面设置反向代理(如 nginx)。
E:抱歉...这是一段时间内唯一的答案。我是删除这个还是什么?
这与 sapper 无关。只需使用您的服务器框架的选项。你用express还是polka?听从他们的指示!
您需要从某个地方创建 SSL 证书(例如 ZeroSSL)。如果您已经有 certificate.crt
和 private.key
文件,请编辑您的 server.js
文件。
<sapper project directory>/src/server.js
的原始源代码是:
import sirv from 'sirv';
import polka from 'polka';
import compression from 'compression';
import * as sapper from '@sapper/server';
const { PORT, NODE_ENV } = process.env;
const dev = NODE_ENV === 'development';
polka() // You can also use Express
.use(
compression({ threshold: 0 }),
sirv('static', { dev }),
sapper.middleware()
)
.listen(PORT, err => {
if (err) console.log('error', err);
});
您可以像这样添加和更改此文件 (server.js
) 的一些代码:
import sirv from 'sirv';
import polka from 'polka';
import compression from 'compression';
import * as sapper from '@sapper/server';
const { PORT, NODE_ENV } = process.env;
const dev = NODE_ENV === 'development';
const { createServer } = require('https');
const { readFileSync } = require('fs');
const ssl_port = 443;
const options = {
// The path & file names could be different.
key: readFileSync('/home/ubuntu/ssl/private.key'),
cert: readFileSync('/home/ubuntu/ssl/certificate.crt')
};
const { handler } = polka()
.use(
compression({ threshold: 0 }),
sirv('static', { dev }),
sapper.middleware()
)
.get('*', (req, res) => {
res.end(`POLKA: Hello from ${req.pathname}`);
});
// Mount Polka to HTTPS server
createServer(options, handler).listen(ssl_port, _ => {
console.log(`> Running on https://localhost:${ssl_port}`);
});
添加的代码是:
const { createServer } = require('https');
const { readFileSync } = require('fs');
const ssl_port = 443;
const options = {
// The path & file names could be different.
key: readFileSync('/home/ubuntu/ssl/private.key'),
cert: readFileSync('/home/ubuntu/ssl/certificate.crt')
};
更改后的代码为:
const { handler } = polka()
.use(
compression({ threshold: 0 }),
sirv('static', { dev }),
sapper.middleware()
)
.get('*', (req, res) => {
res.end(`POLKA: Hello from ${req.pathname}`);
});
// Mount Polka to HTTPS server
createServer(options, handler).listen(ssl_port, _ => {
console.log(`> Running on https://localhost:${ssl_port}`);
});
然后由于端口 443 的许可,您必须 运行 您的 Svelte/Sapper 应用 sudo
。(像这样:sudo npm run dev
或 sudo npm run start
)
在你 运行 sudo npm run dev
之后,你可能会看到消息:
$ sudo npm run dev
> TODO@0.0.1 dev /home/ubuntu/ensayar-sapper
> sapper dev
✔ server (2.1s)
✔ client (2.1s)
> Running on https://localhost:443
✔ service worker (42ms)
> Server is not listening on port 3000
您可以忽略消息Server is not listening on port 3000
。
我似乎无法通过 https 找到任何关于 运行ning Svelte 应用程序的信息。我想在 https 上为开发人员和生产人员 运行。我可以在 package.json 的脚本中使用 --port
参数更改端口,但显然这不会将协议从 http 更改为 https。
目前看来唯一的方法是 运行 在 Svelte/Sapper 应用程序前面设置反向代理(如 nginx)。
E:抱歉...这是一段时间内唯一的答案。我是删除这个还是什么?
这与 sapper 无关。只需使用您的服务器框架的选项。你用express还是polka?听从他们的指示!
您需要从某个地方创建 SSL 证书(例如 ZeroSSL)。如果您已经有 certificate.crt
和 private.key
文件,请编辑您的 server.js
文件。
<sapper project directory>/src/server.js
的原始源代码是:
import sirv from 'sirv';
import polka from 'polka';
import compression from 'compression';
import * as sapper from '@sapper/server';
const { PORT, NODE_ENV } = process.env;
const dev = NODE_ENV === 'development';
polka() // You can also use Express
.use(
compression({ threshold: 0 }),
sirv('static', { dev }),
sapper.middleware()
)
.listen(PORT, err => {
if (err) console.log('error', err);
});
您可以像这样添加和更改此文件 (server.js
) 的一些代码:
import sirv from 'sirv';
import polka from 'polka';
import compression from 'compression';
import * as sapper from '@sapper/server';
const { PORT, NODE_ENV } = process.env;
const dev = NODE_ENV === 'development';
const { createServer } = require('https');
const { readFileSync } = require('fs');
const ssl_port = 443;
const options = {
// The path & file names could be different.
key: readFileSync('/home/ubuntu/ssl/private.key'),
cert: readFileSync('/home/ubuntu/ssl/certificate.crt')
};
const { handler } = polka()
.use(
compression({ threshold: 0 }),
sirv('static', { dev }),
sapper.middleware()
)
.get('*', (req, res) => {
res.end(`POLKA: Hello from ${req.pathname}`);
});
// Mount Polka to HTTPS server
createServer(options, handler).listen(ssl_port, _ => {
console.log(`> Running on https://localhost:${ssl_port}`);
});
添加的代码是:
const { createServer } = require('https');
const { readFileSync } = require('fs');
const ssl_port = 443;
const options = {
// The path & file names could be different.
key: readFileSync('/home/ubuntu/ssl/private.key'),
cert: readFileSync('/home/ubuntu/ssl/certificate.crt')
};
更改后的代码为:
const { handler } = polka()
.use(
compression({ threshold: 0 }),
sirv('static', { dev }),
sapper.middleware()
)
.get('*', (req, res) => {
res.end(`POLKA: Hello from ${req.pathname}`);
});
// Mount Polka to HTTPS server
createServer(options, handler).listen(ssl_port, _ => {
console.log(`> Running on https://localhost:${ssl_port}`);
});
然后由于端口 443 的许可,您必须 运行 您的 Svelte/Sapper 应用 sudo
。(像这样:sudo npm run dev
或 sudo npm run start
)
在你 运行 sudo npm run dev
之后,你可能会看到消息:
$ sudo npm run dev
> TODO@0.0.1 dev /home/ubuntu/ensayar-sapper
> sapper dev
✔ server (2.1s)
✔ client (2.1s)
> Running on https://localhost:443
✔ service worker (42ms)
> Server is not listening on port 3000
您可以忽略消息Server is not listening on port 3000
。