AI-Sphere-Butler之Ubuntu服务器如何部署Nginx代理,并将HTTP升级成HTTPS,用于移动设备访问

环境:

AI-Sphere-Butler

WSL2

Ubuntu22.04

Nginx

问题描述:

AI-Sphere-Butler之Ubuntu服务器如何部署Nginx代理,并将HTTP升级成HTTPS,用于移动设备访问

在这里插入图片描述

解决方案:

一、生成加密证书

1.配置OpenSSL生成本地不加密证书

1.确保你已经安装了 Nginx 和 OpenSSL,可以使用以下命令在 Ubuntu 上安装它们:

sudo apt update
sudo apt install nginx openssl

2.生成自签名SSL证书

如果你还没有SSL证书,可以按照之前命令生成一个自签名证书,假设你已经在 /etc/nginx/ssl 目录下生成了 private.keycertificate.crt 文件。

sudo mkdir -p /etc/nginx/ssl
cd /etc/nginx/ssl
openssl genpkey -algorithm RSA -out private.key
openssl req -new -key private.key -out csr.csr
openssl x509 -req -days 365 -in csr.csr -signkey private.key -out certificate.crt

在这里插入图片描述用不加密证书

openssl rsa -in /etc/nginx/ssl/private.key -out /etc/nginx/ssl/private_unencrypted.key

二、部署Nginx服务

1.更新软件包列表

首先,确保系统软件包列表是最新的:

sudo apt update

2.安装Nginx

使用apt命令来安装Nginx:

sudo apt install nginx

安装过程中,可能会提示你输入管理员密码以确认操作权限。
在这里插入图片描述

3.启动和启用Nginx

安装完成后,启动Nginx服务,并设置它在系统启动时自动运行:

sudo systemctl start nginx
sudo systemctl enable nginx

可以通过以下命令检查Nginx的状态,确保它正在运行:

sudo systemctl status nginx

在这里插入图片描述

如果一切正常,应该会看到类似“active (running)”的输出。

4.配置防火墙

如果你的Ubuntu服务器启用了UFW(Uncomplicated Firewall),要需要允许HTTP和HTTPS流量:

sudo ufw allow 'Nginx Full'

这条命令将允许通过HTTP(端口80)和HTTPS(端口443)的流量。如果你想只允许HTTP或HTTPS,可以分别使用'Nginx HTTP''Nginx HTTPS'

5.验证Nginx安装

打开浏览器并访问你的服务器IP地址或域名(例如:http://your_server_ip)。你应该能看到默认的Nginx欢迎页面,表明Nginx已经成功安装并运行。
在这里插入图片描述
6.基本配置文件路径

  • 主配置文件/etc/nginx/nginx.conf
  • 站点配置文件:通常位于/etc/nginx/sites-available/目录下,默认站点配置文件为default
  • 日志文件:位于/var/log/nginx/目录下的access.logerror.log

7.代理本地模块服务

本地地址:http://192.168.1.22:8010/realtalk/examples/index.html目标地址:https://192.168.1.22:7010/realtalk/examples/index.html

编写nginx默认配置文件

nano /etc/nginx/sites-available/default

server {listen 7010 ssl;server_name 192.168.1.22;# SSL 证书配置ssl_certificate /etc/nginx/ssl/certificate.crt;ssl_certificate_key /etc/nginx/ssl/private_unencrypted.key;# SSL 协议与密码套件ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers HIGH:!aNULL:!MD5;# 静态资源配置location /realtalk/examples/ {alias /mnt/e/work/metahuman-stream/web/realtalk/examples/;index index.html;# 处理静态文件的缓存控制,确保加载最新资源add_header Cache-Control "no-cache, no-store, must-revalidate";add_header Pragma "no-cache";add_header Expires 0;# 启用目录列表(可选,方便调试)autoindex on;autoindex_exact_size off;autoindex_localtime on;}   # 新增代理路径location /client.js {proxy_pass http://192.168.1.22:8010/client.js; # 将 HTTPS 请求转发到 HTTP 服务proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;} # 代理 /webrtcapi.html 到 8010location /webrtcapi.html {proxy_pass http://192.168.1.22:8010/webrtcapi.html;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}    # 新增代理 /qwener 到 8010/qwenerlocation /qwener {proxy_pass http://192.168.1.22:8010/qwener;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;# 可选:添加缓存控制头(如果需要控制缓存)add_header Cache-Control "no-cache, no-store, must-revalidate";add_header Pragma "no-cache";add_header Expires 0;}# API 请求代理配置location /api/ {proxy_pass http://127.0.0.1:8010;# 跨域设置add_header Access-Control-Allow-Origin *;add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";add_header Access-Control-Allow-Headers "Authorization, Content-Type";# 处理预检请求 (CORS)if ($request_method = 'OPTIONS') {add_header 'Access-Control-Allow-Origin' '*';add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';add_header 'Access-Control-Allow-Headers' 'Authorization, Content-Type';add_header 'Access-Control-Max-Age' 1728000;add_header 'Content-Type' 'text/plain charset=UTF-8';add_header 'Content-Length' 0;return 204;}}# WebSocket 请求代理location /ws/ {proxy_pass http://127.0.0.1:8010;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";proxy_set_header Host $host;}# 主站点代理,用于其他未明确匹配的路径location / {proxy_pass http://127.0.0.1:8010;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;# 防止 WebSocket 或长连接被切断proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";}
}# HTTP 配置(重定向至 HTTPS)
server {listen 80;server_name 192.168.1.22;# 将所有 HTTP 请求强制重定向到 HTTPSreturn 301 https://$host$request_uri;
}

三、更改下面几个文件代码(改成你本地的)

E:\work\metahuman-stream\web\realtalk\examples\index.html

https://192.168.1.22:7010/webrtcapi.html

在这里插入图片描述
E:\work\metahuman-stream\web\realtalk\examples\index_noauto.js

在这里插入图片描述

四、测试

手机设备使用谷歌、火狐、edge浏览器测试输入访问测试
https://192.168.1.22:7010/realtalk/examples/index.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/40159.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

游戏引擎学习第180天

我们将在某个时候替换C标准库函数 今天我们要进行的工作是替换C标准库函数,这是因为目前我们仍然在使用C语言开发,并且在某些情况下会调用C标准库函数,例如一些数学函数和字符串格式化函数,尤其是在调试系统中,我们使…

C/S与B/S架构

目录 C/S架构 什么是C/S架构 优缺点 B/S架构 什么是B/S架构 优缺点 对比项C/S 架构B/S 架构安装相对复杂,要安装单独客户端软件易于安装,与平台无关,只需要浏览器软件部署和维护部署维护较为繁琐,升级难易于部署和维护&…

python之网络编程

网络编程 互联网时代,现在基本上所有的程序都是网络程序,很少有单机版 的程序了。 网络编程就是如何在程序中实现两台计算机的通信。 Python语言中,提供了大量的内置模块和第三方模块用于支持各种 网络访问,而且Python语言在网络…

@Autowired 和 @Resource 注解的区别

前言 Autowired 和 Resource 是 Spring 中用于依赖注入的注解,但两者在实现机制和使用方式上有显著差异。 主要区别 1.来源不同 Autowired:由 Spring 框架提供(org.springframework.beans.factory.annotation),与 S…

2024年数维杯数学建模B题生物质和煤共热解问题的研究解题全过程论文及程序

2024年数维杯数学建模 B题 生物质和煤共热解问题的研究 原题再现: 随着全球能源需求的不断增长和对可再生能源的追求,生物质和煤共热解作为一种潜在的能源转化技术备受关注。生物质是指可再生能源,源自植物和动物的有机物质,而煤…

计算机网络——物理层设备

目录 ​编辑 中继器 集线器(Hub) 集线器,中继器的一些特性 集线器和中继器不能“无限串联” 集线器连接的网络,物理上是星型拓扑,逻辑上是总线型拓扑 集线器连接的各网段会“共享带宽” 中继器 如果我们想要网络…

NVIDIA NeMo 全面教程:从入门到精通

NVIDIA NeMo 全面教程:从入门到精通 文章目录 NVIDIA NeMo 全面教程:从入门到精通目录框架介绍NeMo的核心特点NeMo的架构NeMo与其他框架的比较NeMo的模型集合NeMo的工作流程NeMo 2.0的新特性 安装指南系统要求使用Docker容器安装步骤1:安装Do…

Chrome 134 版本开发者工具(DevTools)更新内容

Chrome 134 版本开发者工具(DevTools)更新内容 一、隐私与安全面板 旧的 Security 面板已演变为隐私与安全面板,并新增了一个专注于隐私的部分。在该部分中,可以: 在 DevTools 打开时,临时限制第三方 Co…

顺序表和链表

目录 线性表顺序表概念与结构分类静态顺序表动态顺序表 动态顺序表的实现SeqList.hSeqLIst.c 和 test.c初始化SLInit增容SLCheckCapacity尾插SLPushBack打印SLPrint头插SLPushFront尾删SLPopBack头删SLPopFront查找SLFind任意插SLInsert任意删SLErase销毁顺序表SLDestroy 顺序表…

性能测试、负载测试、压力测试的全面解析

在软件测试领域,性能测试、负载测试和压力测试是评估系统稳定性和可靠性的关键手段。​它们各自关注不同的测试目标和应用场景,理解这些差异对于制定有效的测试策略至关重要。 本文对性能测试、负载测试和压力测试进行深入分析,探讨其定义、…

FPGA_YOLO(二)

上述对cnn卷积神经网络进行介绍,接下来对YOLO进行总结,并研究下怎么在FPGA怎么实现的方案。 对于一个7*7*30的输出 拥有49个cell 每一个cell都有两个bbox两个框,并且两个框所包含的信息拥有30个 4个坐标信息和一个置信度5个,剩下就是20个类别。 FPGA关于YOLO的部署 1…

Windows系统安装Node.js和npm教程【成功】

0.引言——Node.js和npm介绍 项目描述Node.js基于Chrome V8引擎的JavaScript运行环境,使JavaScript可用于服务器端开发。采用单线程、非阻塞I/O及事件驱动架构,适用于构建Web服务器、实时应用和命令行工具等npmNode.js的包管理器与大型软件注册表。拥有…

使用外部事件检测接入 CDH 大数据管理平台告警

CDH 大数据管理平台 CDH(Cloudera Distribution Hadoop)是一个企业级的大数据平台,由 Cloudera 公司提供,它包含了 Apache Hadoop 生态系统中的多种开源组件,并对其进行了优化和集成,以支持大规模数据存储…

Node.js的安装和环境配置

漂亮女同事想了解Node.js的安装和环境配置。首先,我说需要回忆一下自己安装Node.js的经历,确保步骤是正确的。可能用户是刚接触开发的新手,所以需要详细但清晰的指导。 首先,应该介绍Node.js是什么,不过用户可能已经知…

在普通用户下修改root用户密码

1 从普通用户切换到root用户 sudo -s 再输入密码。 2 输入passwd ,会提醒你输入当前用户密码,验证后会提醒你输入root用户密码。 3 切换到root用户,使用修改过的密码登陆。 4 成功进入root用户。

【#2】介绍第三方库

一、JsonCpp 库 🔥 JSONCPP 是一个开源的 C 库,用于解析和生成 JSON(JavaScript Object Notation)数据。它提供了简单易用的接口,支持 JSON 的序列化和反序列化操作,适用于处理配置文件、网络通信数据等场…

Qt开发:QInputDialog的使用

文章目录 一、QInputDialog的介绍二、 QInputDialog的基本用法三、使用 QInputDialog的实例四、QInputDialog的信号与槽 一、QInputDialog的介绍 QInputDialog 是 Qt 提供的一个对话框类,用于获取用户输入的文本、整数或浮点数。它提供了简单易用的静态方法和可定制…

SCI一区 | Matlab实现DBO-TCN-LSTM-Attention多变量时间序列预测

SCI一区 | Matlab实现DBO-TCN-LSTM-Attention多变量时间序列预测 目录 SCI一区 | Matlab实现DBO-TCN-LSTM-Attention多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.【SCI一区级】Matlab实现DBO-TCN-LSTM-Attention多变量时间序列预测(程…

Vulnhub-Thales通关攻略

第0步:网卡配置 靶机端:将下载好的靶机环境,导入 VritualBox,设置为 Host-Only 模式 Kali端:将 VMware 中桥接模式网卡设置为 VritualBox 的 Host-only 第一步:确定靶机IP #靶机IP 192.168.56.101#KaliIP 1…

JVM 02

今天是2025/03/23 19:07 day 10 总路线请移步主页Java大纲相关文章 今天进行JVM 3,4 个模块的归纳 首先是JVM的相关内容概括的思维导图 3. 类加载机制 加载过程 加载(Loading) 通过类全限定名获取类的二进制字节流(如从JAR包、网络、动态…