我们有一个基于Next.js和Express的网站。这个网站运行在一个cPanel服务器上,使用Apache作为主服务器,同时nginx作为反向代理服务器。
我需要在这个网站上安装ssl证书,但是我对配置方式感到很困惑。
我的server.js文件内容如下:
如果我通过http://myreactsite.com访问该网站,它可以正常工作。但是,如果我通过https://myreactsite.com访问,则无法正常工作,尽管我可以通过指定端口号https://myreactsite.com:8445访问https版本。
我想让它在不指定https端口的情况下正常工作。
如何使我的网站强制所有页面使用https而不指定端口?
我需要在这个网站上安装ssl证书,但是我对配置方式感到很困惑。
我的server.js文件内容如下:
const express = require('express')
const next = require('next')
const https = require('https');
const fs = require('fs');
//const forceSSL = require('express-force-ssl')
var ssl_options = {
key: fs.readFileSync('/home/myreactsite.key'),
cert: fs.readFileSync('/home/myreactsite.crt'),
};
const dev = process.env.NODE_ENV !== 'production'
const app = next({ dev })
const handle = app.getRequestHandler()
const favicon = require('serve-favicon')
const path = require('path')
app.prepare()
.then(() => {
const server = express()
server.use(favicon(path.join(__dirname, 'static', 'images', 'favicon.ico')))
server.get('*', (req, res) => {
return handle(req, res)
})
server.listen(3007, (err) => {
if (err) throw err
console.log('> Ready on http://localhost:3007')
})
var httpsServer = https.createServer(ssl_options,server).listen('8445', (err) => {
if (err) throw err
console.log('> Ready on https://localhost:8445')
})
})
.catch((ex) => {
console.error(ex.stack)
process.exit(1)
})
Apache运行在8080端口,Nginx运行在80端口,Next.js同时运行在3007和8445端口(我更喜欢用它来实现SSL)。
我的Apache配置包含以下内容,以隐藏3007端口:
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://myreactsite.com:3007/
如果我通过http://myreactsite.com访问该网站,它可以正常工作。但是,如果我通过https://myreactsite.com访问,则无法正常工作,尽管我可以通过指定端口号https://myreactsite.com:8445访问https版本。
我想让它在不指定https端口的情况下正常工作。
如何使我的网站强制所有页面使用https而不指定端口?