这两天上线刚备案好的网站,但是用了服务器提供商的一键HTTPS服务,方便的地方是可以强制http转https,比如首页登录http://XXX.com,会自动跳转到https://XXX.com。
但是发现无法通过域名加端口号访问其他端口。因为打算3000端口是用作api的。
后来发现不用一键https服务,换成正常的dns解析,其他端口就可以正常通过域名+端口号访问了。
但是依然想http网站首页自动跳转到https。所以用了koa的重定向。
const fs = require('fs')
const Koa = require('koa');
const app = new Koa()
// 引入https 以及 koa-ssl
const https = require('https')
const sslify = require('koa-sslify').default
const http=require('http')
// 路径为证书放置的位置
const options = {
key: fs.readFileSync('./XXX.com.key'),
cert: fs.readFileSync('./XXX.com.pem'),
}
// 自定义https端口
const config = {
port: 443
}
app.use(require('koa-static')('./public'))
app.use(sslify()) // 使用ssl
// 创建https
https.createServer(options, app.callback()).listen(config.port, (err) => {
if (err) {
console.log('服务启动出错', err);
} else {
console.log('服务器-server运行在' + config.port + '端口');
}
});
// 创建http服务,重定向到https
http.createServer((req, res) => {
res.writeHead(301, { 'Location': 'https://XXX.com' });
res.end();
}).listen(80);