Ubuntu 上使用 Nginx 实现反向代理并启用 HTTPS(详细教程)
拒绝使用宝塔,虽然宝塔很好用方便,但是他非常占用资源,所以我正在尝试转换我使用服务器的方式,通过命令来才做这些,下面是我的详细步骤。
在这篇教程中,我们将详细介绍如何在 Ubuntu 系统上使用 Nginx 搭建一个反向代理,同时使用 Let’s Encrypt 为域名启用 HTTPS。本文适用于那些已经有了域名,并希望通过反向代理让自己的域名指向另一个服务器的用户。
文章目录
- 前提条件
- 第一步:更新系统
- 第二步:安装 Nginx
- 第三步:配置 Nginx 反向代理
- 1. 创建网站根目录
- 2. 编辑 Nginx 配置文件
- 3. 启用站点并重启 Nginx
- 第四步:使用 Let’s Encrypt 启用 HTTPS
- 1. 安装 Certbot 和 Nginx 插件
- 2. 获取 SSL 证书
- 3. 测试 SSL 配置
- 4. 自动续期证书
- 第五步:强制将 HTTP 重定向到 HTTPS(可选)
- 结语
前提条件
- 一台运行 Ubuntu 系统的服务器。
- 已安装 Nginx Web 服务器。
- 有一个已解析到服务器的域名(例如:
share.moshayaoji.site
)。 - 可以访问终端,并具有
sudo
权限。
第一步:更新系统
在安装或配置任何软件之前,确保你的系统是最新的。
sudo apt update
sudo apt upgrade -y
第二步:安装 Nginx
如果你还没有安装 Nginx,可以通过以下命令来安装它:
sudo apt install nginx
安装完成后,启动 Nginx 并设置其开机自启:
sudo systemctl start nginx
sudo systemctl enable nginx
确认 Nginx 服务状态:
sudo systemctl status nginx
你可以通过访问服务器的 IP 地址(如 http://你的服务器IP
)来测试是否安装成功。
第三步:配置 Nginx 反向代理
前提是域名解析到了服务器。
接下来,我们将 Nginx 配置为反向代理,以使访问域名 share.moshayaoji.site
时,可以代理到其他服务器(例如:http://127.0.0.1:8300)。
1. 创建网站根目录
首先,创建用于存放站点的根目录:
sudo mkdir -p /var/www/share.moshayaoji.site/html
sudo chown -R $USER:$USER /var/www/share.moshayaoji.site/html
sudo chmod -R 755 /var/www/share.moshayaoji.site
2. 编辑 Nginx 配置文件
接下来,创建 Nginx 配置文件:
sudo nano /etc/nginx/sites-available/share.moshayaoji.site
在文件中添加以下配置:
server {listen 80;server_name share.moshayaoji.site;location / {proxy_pass http://127.0.0.1:8300;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;}
}
3. 启用站点并重启 Nginx
通过创建符号链接来启用配置:
sudo ln -s /etc/nginx/sites-available/share.moshayaoji.site /etc/nginx/sites-enabled/
测试 Nginx 配置是否正确:
sudo nginx -t
如果没有错误,重启 Nginx 以应用配置:
sudo systemctl reload nginx
第四步:使用 Let’s Encrypt 启用 HTTPS
为你的域名启用 HTTPS 是保护用户数据并提高网站信任度的重要步骤。我们将使用 Let’s Encrypt 提供的免费 SSL 证书。
1. 安装 Certbot 和 Nginx 插件
Certbot 是一个自动化工具,它可以帮助你从 Let’s Encrypt 获取 SSL 证书并自动配置 Nginx。
sudo apt install certbot python3-certbot-nginx
2. 获取 SSL 证书
运行以下命令以为你的域名 share.moshayaoji.site
获取 SSL 证书:
sudo certbot --nginx -d share.moshayaoji.site
Certbot 将会:
- 为你设置 SSL 证书。
- 自动更新 Nginx 配置以启用 HTTPS。
在获取证书时,Certbot 会询问你是否希望自动将 HTTP 请求重定向到 HTTPS。选择“是”以确保用户始终通过 HTTPS 访问网站。
3. 测试 SSL 配置
获取证书后,Certbot 会自动配置并重新加载 Nginx。你可以通过以下命令再次测试 Nginx 配置是否正确:
sudo nginx -t
如果配置无误,Nginx 将会启用 HTTPS,你可以通过浏览器访问 https://share.moshayaoji.site
来验证 SSL 是否正常工作。
4. 自动续期证书
Let’s Encrypt 证书的有效期为 90 天,但 Certbot 会自动为你续期。你可以通过以下命令模拟续期过程,以确保一切正常:
sudo certbot renew --dry-run
Certbot 将会设置一个自动续期的任务,无需你手动干预。
第五步:强制将 HTTP 重定向到 HTTPS(可选)
如果在获取证书时未选择自动重定向,你可以手动在 Nginx 配置中添加强制重定向。编辑配置文件:
sudo nano /etc/nginx/sites-available/share.moshayaoji.site
添加以下内容,以强制将所有 HTTP 请求重定向到 HTTPS:
server {listen 80;server_name share.moshayaoji.site;return 301 https://$host$request_uri;
}
保存并退出编辑器,然后重新加载 Nginx:
sudo systemctl reload nginx
现在,所有的 HTTP 请求都会自动重定向到 HTTPS。
结语
通过以上步骤,你成功在 Ubuntu 系统上使用 Nginx 搭建了一个反向代理,并通过 Let’s Encrypt 启用了 HTTPS。你现在拥有了一个安全、功能完善的网站,能够通过域名进行反向代理,并确保用户访问时使用安全的 HTTPS 协议。
相关文章:
Ubuntu 上使用 Nginx 实现反向代理并启用 HTTPS(详细教程)
拒绝使用宝塔,虽然宝塔很好用方便,但是他非常占用资源,所以我正在尝试转换我使用服务器的方式,通过命令来才做这些,下面是我的详细步骤。 在这篇教程中,我们将详细介绍如何在 Ubuntu 系统上使用 Nginx 搭建…...
2. 继承Mono的单例模式基类
前提 继承MonoBehaviour的脚本不能new继承MonoBehaviour的脚本一定得依附在GameObject上 实现挂载式的单例模式基类 挂载式 继承Mono的单例模式基类 /// <summary> /// 挂载式 继承Mono的单例模式基类 /// </summary> /// <typeparam name"T">&…...

数据治理:制造企业转型的关键要素与战略需求
制造业,作为国民经济的主体,是立国之本、兴国之器、强国之基。从工业文明的曙光初现,到今日全球化的激烈竞争,始终昭示着一个真理:没有强大的制造业,就没有国家和民族的强盛。 为全面推进制造强国建设&…...
FastAPI 基本路由
FastAPI 基本路由 FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,与 Python 3.6+ 类型提示一起使用。在本文中,我们将探讨 FastAPI 的基本路由概念,包括如何定义路由、处理请求和响应,以及一些高级特性。 什么是路由? 在 Web 框架中,路由是指将传入的…...

Python库matplotlib之六
Python库matplotlib之六 动画FuncAnimation构造器成员函数应用例子 动画 Matplotlib基于其绘图功能,还提供了一个使用动画模块,生成动画的接口。动画是一系列帧,其中每个帧对应于图形上的一个图。 Matplotlib使用两个类来实现动画ÿ…...

十一、数据库的设计规范
文章目录 1. 为什么需要数据库设计2. 范式2.1 范式介绍2.2 范式都包括哪些2.3 键和相关属性的概念2.4 第一范式(1st NF)2.5 第二范式(2nd NF)2.6 第三范式(3rd NF)2.7 小结3. 反范式化3.1 概述3.2 应用举例3.3 反范式的新问题3.4 反范式的使用场景3.4.1 增加冗余字段的建议3.…...

这届物理与化学诺奖对S2AIAI4S的启示
物理学与AI看似神秘而又简洁的纠缠 随着今年诺贝尔物理学奖(这篇还没来得及发,化学奖也...)的颁布,不管是国内某圈还是国外某管,无论是学术界又或产业界,充斥着震惊又或是“物理学不存在了”之类的调侃&am…...
压力测试指南-云环境中的压力测试实践
云环境中的压力测试实践 1. 云环境对压力测试的影响 在数字化转型的浪潮中,云环境已成为软件部署与测试的首选。它不仅提供了无限的可扩展性,还极大地改变了我们进行压力测试的方式。传统本地环境中,硬件资源的限制常导致无法模拟真实世界…...

基于多密钥同态加密的安全高效的联邦学习
文章目录 摘要与简介部分1、联邦学习 FL2、同态加密 HE3、文章创新点 一、简介1、基于 HE 的 FLs2、离线问题3、计算开销4、该文章的工作5、文章的贡献点 二、背景和相关研究1、基于多方安全计算 (SMC) 的联邦学习 (FL)2、基于差分隐私 (DP) 的联邦学习 (FL)3、基于可信执行环境…...

R语言统计分析——气泡图
参考资料:R语言实战【第2版】 气泡图(bubble plot)用来展示三个定量变量间的关系:先创建一个二维散点图,然后用点的大小来代表第三个边变量的值。 我们可以使用symbols()函数来创建气泡图。该函数可以在指定的(x,y)坐标…...

实用篇—Navicat复制多条INSERT语句,去除ID列执行
在数据库管理中,常常需要将数据从一个表复制到另一个表。使用 Navicat 等工具可以方便地导出多条 INSERT 语句,但有时我们不需要某些列(如 ID 列)。本文将介绍如何在 Navicat 中复制多条 INSERT 语句,并去除 ID 列以便…...
pytorch中张量的有关操作
pytorch中张量的有关操作 创建张量torch.tensor(data): 从数据创建张量torch.zeros(size): 创建元素全为0的张量torch.ones(size): 创建元素全为1的张量torch.empty(size): 创建未初始化的张量torch.randn(size): 创建服从标准正态分布的张量torch.arange(start, end, step): 创…...
Windows多线程编程 互斥量和临界区使用
Windows 多线程编程允许程序同时运行多个线程,提高程序的并发性和执行效率。多线程编程中的核心概念包括线程的创建、同步、调度、数据共享和竞争条件等。本文详细介绍了 Windows 多线程编程的关键技术点,并解释如何使用线程同步机制来保证线程安全。 1…...
Java中集合类型的转换
在Java编程中,集合框架(Collections Framework)提供了一套用于存储和处理对象集合的接口和类。由于集合框架的灵活性和强大功能,我们经常需要在不同的集合类型之间进行转换。本文将介绍Java中常见的集合类型转换方法,包…...
汽车售后TPMS浅谈
汽车售后中的TPMS,即轮胎压力监测系统(Tire Pressure Monitoring System),是一种重要的汽车安全系统。以下是对汽车售后TPMS的详细解释: 一、TPMS的作用 TPMS的主要作用是在汽车行驶过程中对轮胎气压进行实时自动监测…...

LUCEDA IPKISS Tutorial 77:在版图一定范围内填充dummy
案例分享:在给定的Shape内填充dummy 所有代码如下: from si_fab import all as pdk from ipkiss3 import all as i3 from shapely.geometry import Polygon, MultiPolygon import numpy as np import matplotlib.pyplot as pltclass CellFilledWithCon…...

TON生态小游戏开发:推广、经济模型与UI设计的建设指南
随着区块链技术的快速发展,基于区块链的Web3游戏正引领行业变革。而TON生态小游戏,借助Telegram庞大的用户基础和TON(The Open Network)链上技术,已成为这一领域的明星之一。国内外开发者正迅速涌入,开发和…...
Python 量子机器学习:基础概念、关键算法与应用实践
🌟 Python 量子机器学习:基础概念、关键算法与应用实践 目录 🌍 量子计算的基本原理 量子位、叠加、纠缠等概念解析量子计算如何影响机器学习:速度与效率的提升 🚀 量子机器学习中的关键算法 量子支持向量机…...

信息安全数学基础(29) x^2 + y^2 = p
前言 方程 x2y2p 是一个涉及整数解和素数 p 的二次方程。这个方程在数论和几何中都有重要的意义,特别是在研究圆的整数点和费马大定理的背景下。 一、定义与背景 方程 x2y2p 表示一个平面上的圆,其圆心在原点 (0,0),半径为 p(当…...

ChatGPT国内中文版镜像网站整理合集(2024/10/06)
一、GPT中文镜像站 ① yixiaai.com 支持GPT4、4o以及o1,支持MJ绘画 ② chat.lify.vip 支持通用全模型,支持文件读取、插件、绘画、AIPPT ③ AI Chat 支持GPT3.5/4,4o以及MJ绘画 1. 什么是镜像站 镜像站(Mirror Siteÿ…...

超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...

MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...

用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...

GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...
Web中间件--tomcat学习
Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机,它可以执行Java字节码。Java虚拟机是Java平台的一部分,Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...