当前位置: 首页 > news >正文

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.lryc.cn/news/458428.html

相关文章:

  • 2. 继承Mono的单例模式基类
  • 数据治理:制造企业转型的关键要素与战略需求
  • FastAPI 基本路由
  • Python库matplotlib之六
  • 十一、数据库的设计规范
  • 这届物理与化学诺奖对S2AIAI4S的启示
  • 压力测试指南-云环境中的压力测试实践
  • 基于多密钥同态加密的安全高效的联邦学习
  • R语言统计分析——气泡图
  • 实用篇—Navicat复制多条INSERT语句,去除ID列执行
  • pytorch中张量的有关操作
  • Windows多线程编程 互斥量和临界区使用
  • Java中集合类型的转换
  • 汽车售后TPMS浅谈
  • LUCEDA IPKISS Tutorial 77:在版图一定范围内填充dummy
  • TON生态小游戏开发:推广、经济模型与UI设计的建设指南
  • Python 量子机器学习:基础概念、关键算法与应用实践
  • 信息安全数学基础(29) x^2 + y^2 = p
  • ChatGPT国内中文版镜像网站整理合集(2024/10/06)
  • 图文深入理解Oracle DB Scheduler
  • gin如何具体利用Server-Send-Events(SSE)实时推送技术实现消息推送
  • 写端口-tcp udp不同方式发包和接包
  • 计算机的错误计算(一百二十)
  • Spring Boot 中使用 JSON Schema 来校验复杂 JSON 数据
  • QT实现Opencv图像处理
  • 刚转Mac的新手如何卸载不需要的应用程序
  • Unity 3d 继承MonoBahaviour的单例
  • grafana version 11.1.0 设置Y轴刻度为1
  • Elasticsearch的安装与配置
  • win0删除 Windows.old