Express本地测试HTTPS的示例代码
本文将为您介绍如何在本地测试Express的HTTPS功能。长沙网络推广认为这是一个很好的示例,现在分享给大家,并作为参考。让我们跟随长沙网络推广一起来了解吧。
一、我的环境
亚马逊(AWS)的ubuntu虚拟机
Node.js
OpenSSL
二、生成证书
为了本地测试HTTPS,我们需要生成自签名证书。运行以下命令将在您的当前文件夹生成名为localhost.key和localhost.cert的文件。
```bash
openssl genrsa -out localhost.key 2048
openssl req -new -x509 -key localhost.key -out localhost.cert -days 3650 -subj /CN=localhost
```
这里的“localhost”是域名,您可以根据您的实际情况进行替换。例如,如果您的虚拟机的域名是x.pute.amazonaws.,则需要将上述命令中的所有“localhost”替换为您的域名。
更新:您还可以使用以下命令生成证书和私钥:
```bash
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365
```
如果不想用密码保护私钥,可以加上-nodes选项。通过-subj选项可以设置certificate的内容,将其中的localhost替换成你的域名。
三、代码
为了运行以下代码,您需要安装一些包:
```bash
npm init
npm i -S https express
```
接下来,创建名为index.js的文件,并输入以下内容:
```javascript
!/usr/bin/env node
var https = require('https');
var fs = require('fs');
var express = require('express');
var host = 'x.pute.amazonaws.'; // 请在此处输入您的域名
var options = {
key: fs.readFileSync('./' + host + '.key'),
cert: fs.readFileSync('./' + host + '.cert'),
requestCert: false,
rejectUnauthorized: false
};
var httpApp = express();
var app = express();
app.get('/', function (req, res) {
res.send('hi HTTPS');
});
httpApp.get('/', function (req, res) {
res.send('hi HTTP');
});
httpApp.listen(80, function () {
console.log('http on 80');
});
var server = https.createServer(options, app);
server.listen(443, function () {
console.log('https on 443');
});
```
四、启动服务器
在终端中运行以下命令启动服务器:
```bash
sudo node index.js
```
五、访问
在浏览器中访问以下URL,以测试HTTP和HTTPS服务器:
(将显示“hi HTTP”)
(将显示“hi HTTPS”)请确保将上述URL中的“x”替换为您的实际域名。以上就是本文的全部内容,希望对大家的学习有所帮助。也希望大家多多支持狼蚁SEO。 (完)