基于ubuntu 22.04搭建nodejs https服务器

导航不迷路:

1、搭建nodejs http服务器

2、搭建nodejs https服务器(本文)

3、搭建nodejs 真正的服务器

前言:

前面搭建的http服务器就是学习用的,不太安全啦,这次我们直接大家个带s(Secure),话不多说,开整!

生成证书:

  • 新建cert目录:
mkdir cert
cd cert/
  • 生成证书:
    这儿使用 OpenSSL 工具来生成自签名的 SSL/TLS 证书,用于加密 HTTPS 网站的通信,命令如下:
openssl req -nodes -new -x509 -keyout server.key -out server.cert
cd ..

执行方法就是:一路狂按Enter键!!!
以下是对该命令的解释

  • openssl: 这是 OpenSSL 工具的命令行接口,用于执行各种加密算法和操作。
    req: 表示这是一个用于生成证书请求的 OpenSSL 子命令。
  • -nodes: 这个选项指示 OpenSSL 不加密生成的私钥文件。私钥文件通常是加密的,但使用 -nodes 选项生成的私钥文件是不加密的,这样在使用私钥时就不需要输入密码。
  • -new: 这个选项告诉 OpenSSL 创建一个新的证书请求。
  • -x509: 这个选项指定生成自签名的 X.509 证书,而不是一个证书请求。
  • -keyout server.key: -keyout 选项指定生成的私钥文件的名称为 server.key。这个私钥文件包含了服务器的私钥,用于对数据进行加密和解密。
  • -out server.cert: -out 选项指定生成的证书文件的名称为 server.cert。这个证书文件包含了服务器的公钥和一些其他信息,用于客户端验证服务器的身份。

编写js脚本:

'use strict'

var https = require('https');
var fs = require('fs');

var options = {
  key : fs.readFileSync('./cert/server.key'),
  cert : fs.readFileSync('./cert/server.cert')
}
var app = https.createServer(options, function(req, res){
  res.writeHead(200, {'Content-Type':'text/plain'});
  res.end('HTTPS:Hello, I am a https server!\n');
}).listen(443, '0.0.0.0');

代码解释:

  • ‘use strict’;:严格模式声明,提供更加安全且规范的 JavaScript 编程环境。
  • https = require(‘https’);:引入 Node.js 的内置 https 模块,用于创建 HTTPS 服务器。
  • fs = require(‘fs’);:引入 Node.js 的内置 fs 模块,用于文件操作。
  • options:包含了 HTTPS 服务器所需的证书和私钥信息。
  • key : fs.readFileSync(‘./cert/server.key’):读取位于 ./cert/server.key 的服务器私钥文件。
  • cert : fs.readFileSync(‘./cert/server.cert’):读取位于 ./cert/server.cert 的服务器证书文件。
  • https.createServer(options, function(req, res){…}):创建一个 HTTPS 服务器实例,传入证书和私钥选项,并设置请求处理函数。
  • res.writeHead(200, {‘Content-Type’:‘text/plain’});:设置响应头,状态码为 200,内容类型为纯文本。
  • res.end(‘HTTPS:Hello, I am a https server!\n’);:发送 “HTTPS:Hello, I am a https server” 文本作为响应。
  • .listen(443, ‘0.0.0.0’);:将服务器绑定在 443 端口,并监听所有网络接口的连接。

运行:

sudo node https_server.js

有人可能会问,我上面不是介绍了forever嘛,为啥不用?因为我写文章时候刚申请了一台某云服务器,forever工具装了1个小时了还没动(最终发现更新下源就好了,命令:sudo npm config set registry https://registry.npmmirror.com/!)

使用浏览器访问:

在这里插入图片描述

杂:

1、记得安装npm的时候要设置源:

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -

千万不能使用sudo,否则,只能root使用;

2、nodejs和npm版本好一定要匹配,否则执行不成功,具体参考:
https://nodejs.org/zh-cn/about/previous-releases
在这里插入图片描述

欢迎关注公众号:
在这里插入图片描述

<think>首先,用户的问题是关于如何搭建一个服务器来支持上传和保存WebGL项目。用户意图是搭建服务器,用于上传和保存WebGL内容,特别是Unity WebGL项目。 从系统级指令中,我需要: - 所有行内数学表达式用$...$格式。 - 独立公式用$$...$$格式并单独成段。 - 使用中文回答。 - 生成相关问题。 - 在回答中引用的段落末尾自然地添加引用标识,如[^1]。 - 回答结构清晰,帮助用户逐步解决问题。 - 保证回答真实可靠。 参考提供的引用: - [^1]: 关于将Unity WebGL项目上传到云服务器的步骤。 - [^2]: 关于上传文件到云服务器的方法,如使用数据传输工具或远程桌面。 - [^3]: 关于Vue3和Three.js项目,但似乎不直接相关。 - [^4]: 关于Unity WebGL从本地硬盘上传文件到沙盒中。 用户的上一次问题是关于搭建服务器以支持上传和保存WebGL项目,所以我需要基于这个意图来回答。 关键点: - 搭建服务器:这可能涉及设置一个云服务器或本地服务器。 - 支持上传:需要配置服务器来接收文件上传。 - 保存WebGL项目:WebGL项目通常是静态文件,如HTML、JS、CSS等。 步骤: 1. **选择服务器类型**:推荐使用云服务器,如AWS、Azure、腾讯云等,因为它们易于设置和扩展。 2. **设置服务器环境**:安装必要的软件,如Web服务器(如Nginx或Apache)。 3. **配置文件上传**:设置一个上传端点,可能使用后端技术如Node.js、Python Flask等。 4. **部署WebGL项目**:将上传的文件保存到服务器,并配置Web服务器来服务这些文件。 从引用[^1]和[^2],它们提到了上传到云服务器和使用工具如QQ.exe或远程桌面。但QQ.exe可能不是最佳实践;更专业的方法是使用FTP、SCP或云存储服务。 引用[^4]讨论了Unity WebGL从本地上传文件,但这是针对客户端上传到浏览器沙盒,而不是服务器端上传。我需要区分:用户想上传WebGL项目到服务器,而不是在WebGL应用中上传文件。 所以,核心是服务器搭建和文件上传机制。 回答结构: - 清晰、逐步的指南。 - 使用中文。 - 在相关部分添加引用标识。 - 生成相关问题。 大纲回答: 1. **介绍**:简要解释搭建服务器的目的。 2. **步骤**: a. 选择云服务提供商。 b. 创建和配置云服务器实例。 c. 安装Web服务器软件。 d. 设置文件上传机制。 e. 部署WebGL项目。 3. **详细说明每个步骤**。 4. **添加引用**:自然地引用相关部分。 5. **生成相关问题**:在末尾添加。 生成相关问题: - 基于主题,如优化、安全、其他应用等。 - 例如: 1. 如何优化WebGL项目的加载速度? 2. 如何确保文件上传的安全性? 3. 还有其他方法部署WebGL项目吗? 确保LaTeX正确:由于主题是服务器搭建,可能没有太多数学表达式,但如果有,需正确格式化。例如,如果提到算法或公式。 最终回答用中文。</think>### 如何搭建服务器以支持上传和保存WebGL项目 搭建服务器来支持上传和保存WebGL项目(如Unity WebGL应用)是一个常见的需求,涉及设置云服务器、配置Web服务、并实现文件上传功能。WebGL项目本质上是静态文件(HTML、JS、CSS等),因此服务器需要提供文件存储和访问服务。以下是一个逐步指南,基于可靠实践(如使用主流云服务),确保过程清晰易行。整个过程假设您已有基本的命令行操作经验。 #### 步骤1: 选择云服务提供商并创建服务器实例 首先,选择一个云服务提供商(如阿里云、腾讯云或AWS),它们提供易于管理的云服务器(ECS)。这些平台支持一键部署,并自带安全组(防火墙)设置。 - **操作指南**: - 登录云服务控制台(例如腾讯云),进入“云服务器”页面。 - 点击“新建实例”,选择操作系统(推荐Ubuntu 22.04 LTS或Windows Server,根据您熟悉程度)。 - 配置实例规格:WebGL项目文件较小(通常几十MB),选择基础配置(如1核2GB内存)即可。 - 设置安全组:开放必要端口,如HTTP(80)、HTTPS(443)、SSH(22)或FTP(21),以允许外部访问和文件上传[^1]。 - **注意事项**:免费试用套餐通常足够测试;确保绑定公网IP地址,以便从外部访问。 #### 步骤2: 安装并配置Web服务器软件 Web服务器负责托管WebGL文件,让用户通过浏览器访问。推荐使用Nginx(轻量高效)或Apache。 - **操作指南**: - **连接服务器**:使用SSH(Linux)或远程桌面(Windows)登录服务器。例如,在终端输入 `ssh root@your-server-ip`。 - **安装Nginx**: ```bash # 更新系统包 sudo apt update # 安装Nginx sudo apt install nginx -y # 启动Nginx服务 sudo systemctl start nginx # 设置开机自启 sudo systemctl enable nginx ``` - **配置Nginx**:编辑配置文件 `/etc/nginx/sites-available/default`,将根目录指向WebGL项目存储路径(如 `/var/www/html/webgl`)。示例配置: ```nginx server { listen 80; server_name your-domain.com; # 替换为您的域名或IP root /var/www/html/webgl; index index.html; location / { try_files $uri $uri/ =404; } } ``` 保存后运行 `sudo nginx -t` 测试配置,再 `sudo systemctl reload nginx` 重启服务[^1]。 - **注意事项**:如果使用HTTPS,申请免费SSL证书(如Let's Encrypt)以加密流量。 #### 步骤3: 设置文件上传机制 实现文件上传功能,允许您从本地计算机上传WebGL项目到服务器。推荐使用FTP/SFTP或后端API,避免不安全的工具如QQ.exe[^2]。 - **方法1: 使用SFTP(安全文件传输协议)**: - **安装SFTP服务**:在服务器安装OpenSSH(通常预装)。确保安全组开放端口22。 - **上传文件**:在本地计算机使用SFTP客户端(如FileZilla): - 输入服务器IP、用户名和密码。 - 将本地WebGL文件夹(包含index.html等文件)拖拽到服务器目录(如 `/var/www/html/webgl`)。 - **优点**:支持断点续传,适合大文件[^2]。 - **方法2: 使用后端API(更灵活)**: - **安装后端框架**:例如,用Node.js和Express搭建简单上传接口。 ```bash # 安装Node.js sudo apt install nodejs npm -y # 创建项目目录 mkdir ~/upload-server && cd ~/upload-server npm init -y npm install express multer # multer处理文件上传 ``` - **创建上传脚本**:新建 `app.js` 文件: ```javascript const express = require('express'); const multer = require('multer'); const app = express(); const port = 3000; // 设置存储路径(WebGL项目目录) const storage = multer.diskStorage({ destination: (req, file, cb) => cb(null, '/var/www/html/webgl'), filename: (req, file, cb) => cb(null, file.originalname) }); const upload = multer({ storage }); // 定义上传端点 app.post('/upload', upload.single('webglFile'), (req, res) => { res.send('文件上传成功!'); }); app.listen(port, () => console.log(`服务器运行在 http://your-server-ip:${port}`)); ``` - **运行并测试**:启动服务 `node app.js`,使用Postman或curl测试上传: ```bash curl -X POST -F "webglFile=@/path/to/local/file.zip" http://your-server-ip:3000/upload ``` - **集成到前端**:如果需要网页上传界面,可结合HTML表单[^4]。 #### 步骤4: 部署和测试WebGL项目 上传文件后,配置服务器以服务WebGL内容,并验证访问。 - **操作指南**: - 将WebGL项目文件(Unity导出的Build文件夹)上传到指定目录(如 `/var/www/html/webgl`)。 - 设置目录权限:运行 `sudo chmod -R 755 /var/www/html/webgl` 确保Nginx可读取。 - 测试访问:在浏览器输入服务器IP或域名,应显示WebGL应用。例如,`http://your-server-ip`。 - **故障排除**:如果遇到跨域问题(CORS),在Nginx配置中添加 `add_header 'Access-Control-Allow-Origin' '*';`[^1]。 #### 最佳实践和注意事项 - **安全性**:使用SFTP代替FTP,避免明文传输;定期更新服务器补丁;设置防火墙规则限制访问IP。 - **成本优化**:云服务器按需计费,测试阶段选择按量付费;静态文件可搭配CDN加速加载。 - **备份**:启用云服务自动快照功能,防止数据丢失。 - **性能**:对于高流量,升级服务器规格或使用负载均衡[^1]。 通过以上步骤,您可快速搭建一个支持上传和保存WebGL项目的服务器。整个过程基于实际部署经验,确保可靠性和易用性。如果您遇到具体问题(如Unity导出设置),可参考Unity官方文档或社区资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值