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(可选)
    • 结语

前提条件

  1. 一台运行 Ubuntu 系统的服务器。
  2. 已安装 Nginx Web 服务器。
  3. 有一个已解析到服务器的域名(例如:share.moshayaoji.site)。
  4. 可以访问终端,并具有 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 协议。

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

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

相关文章

【论文#码率控制】ADAPTIVE RATE CONTROL FOR H.264

目录 摘要1.前言2.基本知识2.1 蛋鸡悖论2.2 基本单元的定义2.3 线性MAD预测模型 3.GOP级码率控制3.1 总比特数3.2 初始化量化参数 4.帧级码率控制4.1 非存储图像的量化参数4.2 存储图像的目标比特 5.基本单元级码率控制6.实验结果7.结论 《ADAPTIVE RATE CONTROL FOR H.264》 A…

go clean command

文章目录 1.简介2.格式3.选项4.示例5.应用场景6.小结参考文献 1.简介 在 Go 语言的开发过程中,管理依赖和构建缓存是非常重要的。随着项目的迭代,旧的缓存和不再需要的依赖可能会影响构建的效率和准确性。 Go 提供了一个非常实用的命令 go clean&#…

第J5周:DenseNet+SE-Net实战(TensorFlow版)

>- **🍨 本文为[🔗365天深度学习训练营]中的学习记录博客** >- **🍖 原作者:[K同学啊]** 📌 本周任务: ●1. 在DenseNet系列算法中插入SE-Net通道注意力机制,并完成猴痘病识别&#xff0…

Mysql(八) --- 视图

文章目录 前言1.什么是视图?2.创建视图3. 使用视图4. 修改数据4.1.注意事项 5. 删除视图6.视图的优点 前言 前面我们学习了索引,这次我们来学习视图 1.什么是视图? 视图是一个虚拟的表,它是基于一个或多个基本表或其他视图的查询…

linux 设置tomcat开机启动

在Linux系统中,要配置Tomcat开机自启动,可以创建一个名为 tomcat.service 的 systemd 服务文件,并将其放置在 /etc/systemd/system/ 目录下。以下是一个基本的服务文件示例,假设Tomcat安装在 /usr/local/tomcat 路径下&#xff1a…

Java:玩家打怪小游戏

今天,我们尝试用Java来做一个“打怪小游戏”,听名字就知道,我们是应该创建几个成员和怪物,还有知道知道成员和怪物的血量,一次攻击的伤害等等。。当然我们的游戏攻击模式是“回合制”(其实是别的方法&#…

Element-ui官方示例(Popover 弹出框)

Element-ui官方示例(Popover 弹出框),好用的弹出框。 使用 vue-cli3 我们为新版的 vue-cli 准备了相应的​Element 插件​,你可以用它们快速地搭建一个基于 Element 的项目。 使用 Starter Kit 我们提供了通用的项目模版&#…

SQLAlchemy入门:详细介绍SQLAlchemy的安装、配置及基本使用方法

SQLAlchemy是一个流行的Python SQL工具包和对象关系映射(ORM)框架,它为开发人员提供了一种高效、灵活的方式来与数据库进行交互。本文将详细介绍SQLAlchemy的安装、配置及基本使用方法,并通过代码示例和案例分析,帮助新…

数据使用方法:

MySQL的存储引擎: 存储引擎的类型 MyISAM、InnoDB 、Memory、CSV等9种。 设置表的存储引擎: 数据表的存储位置 将查询结果插入新表 更新数据: 数据更新 更新数据记录 UPDATE 表名SET 字段1值1,字段2值2,...,字段n值 n [WHERE 条件]; 示例&a…

语音杂音问题解决方案-pcm-player

前言 近期在做语音的需求,语音识别(asr)和语音合成(tts),此篇主要介绍语音合成中的杂音解决方案-pcm-player。 问题描述 语音合成 根据文本生成语音并播放,前端实现方式包括前端js(speechSynthesis)播放&#xff0…

论文笔记:Pre-training to Match for Unified Low-shot Relation Extraction

论文来源:ACL 2022 论文地址:https://aclanthology.org/2022.acl-long.397.pdf 论文代码:https://github.com/fc-liu/MCMN (笔记不易,请勿恶意转载抄袭!!!) 目录 A…

手机屏幕上的OCR识别方案

今天要讲的这个技术方案,能用到人会觉得真有用,用不到的人会觉得真没用。这个方案就是采用python实现将安卓手机屏幕上的部分内容转为文字。效果如下: 就算是包含公式或者表格也可以识别: 有类似需求的人,自然能看到…

pnpm报错 cannot find package xxx,有的电脑正常运行,只有这个的电脑报错

pnpm build报错 cannot find package xxx,有的电脑正常运行,只有这一个报错 在网上查找各种资料发现是项目在电脑里的目录层级比较深导致的。 问题:在 Windows 系统上,文件路径过长(超过 260 个字符)可能…

VMware设置虚拟机与物理机在同一网段

1、设置虚拟网络编辑器 打开VMware编辑中的“虚拟网络编辑器...”菜单 将桥接模式选择为物理机的网卡。 2、设置虚拟机的网络适配器 打开“虚拟机|设置...”菜单,按下图设置。 3、查看Ubuntu的IP地址 输入命令: ip addr show 可查看ip地址是否与物…

2020前端面试 - JavaScript2.0篇

前言: 个人觉得面试其实是一个自我学习的过程,如果说短时间内找不到工作,那一定是你面的还不够多,不要气馁,不要放弃,在心底告诉自己,下一次面试,再下一次面试,一定能够拿…

基于Matlab使用蚁群算法寻找最优路径

基于Matlab使用蚁群算法寻找最优路径 与Dijkstra算法使用相同的地图。 每只蚂蚁都从起点出发,直到抵达终点。这与Example5_1.m 中解决旅行商问题不一样,旅行商问题中每一代的蚂蚁都是随机从一个节点出发。 文件说明 Example5_1.m 简单对参考资料2中的…

路由器原理和静态路由配置

一、路由器的工作原理 根据路由表转发数据 接收数据包→查看目的地址→与路由表进行匹配找到转发端口→转发到该端口 二、路由表的形成 它是路由器中维护的路由条目的集合,路由器根据路由表做路径选择,里面记录了网段ip地址和对应下一跳接口的接口号。…

Python 和 Jupyter Kernel 版本不一致

使用jupyter notebook时明明已经安装了包,但是导入时提示: ModuleNotFoundError: No module named ptitprince 1、检查安装环境 !pip show ptitprince Name: ptitprince Version: 0.2.7 Summary: A Python implementation of Rainclouds, originally…

Yocto - Meta-data中的PATCHTOOL变量介绍

在 Yocto 中,“do_patch ”任务负责在构建过程中为源代码打补丁。Yocto 支持多种补丁管理工具,例如 patch、quilt 和 git,每种工具都有不同的特性和用例。 在 Yocto 项目中,PATCHTOOL 变量决定了用于为源代码打补丁的工具。 In Yo…

uniapp学习(004-2 组件 Part.2生命周期)

零基础入门uniapp Vue3组合式API版本到咸虾米壁纸项目实战,开发打包微信小程序、抖音小程序、H5、安卓APP客户端等 总时长 23:40:00 共116P 此文章包含第31p-第p35的内容 文章目录 组件生命周期我们主要使用的三种生命周期setup(创建组件时执行)不可以操作dom节点…