Ubuntu 上使用 Nginx 实现反向代理并启用 HTTPS(详细教程)

server/2024/10/17 23:48:00/

拒绝使用宝塔,虽然宝塔很好用方便,但是他非常占用资源,所以我正在尝试转换我使用服务器的方式,通过命令来才做这些,下面是我的详细步骤。

在这篇教程中,我们将详细介绍如何在 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

在文件中添加以下配置:

nginx">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:

nginx">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.ppmy.cn/server/132046.html

相关文章

从 Reno TCP 到 Scalable TCP,HighSpeed TCP

前文 Scalable TCP 如何优化长肥管道 介绍了 Scalable TCP,但联系另一个类似的算法 HighSpeed TCP(简称 HSTCP),就会看到一个类似从 Reno TCP 经 BIC 到 CUBIC 的路线,但采用了不同的策略。 Reno TCP 经 BIC 到 CUBIC 路线的核心在于 “在长…

SD-WAN解决多云网络互通问题

随着企业业务的扩展,云资源的使用需求日益增加,许多企业逐渐采用了混合云架构。然而,如何高效地实现多云网络的互通,成为了企业急需解决的问题。本文将详细分析当前较为常用的云专线方案面临的挑战以及介绍新的SD-WAN方案。 云专线…

路由器原理

路由器原理 路由器:能够将数据转发到正确的目标,而在这一转发过程中选中最佳路径 路由器原理:根据IP地址转发 路由表:记录的转发的路径 路由表生成: 手动配置路由器自己学习 路由器基础命令: 含义指令查看路由表di…

基于ssm的社区家政服务预约系统的设计与实现

文未可获取一份本项目的java源码和数据库参考。 选题的目的和意义 基于ssm的社区网络的快速发展从根本上更改了世界的企业的管理方式,自二十世纪九十年代开始,我国的很多企业就设想可以通过互联网来进行管理员工以及客户信息。因为当时存在很多的原因&a…

【技术支持】家里智能电视不能联网重置小米路由器之路

问题现象 最近家里的路由器出现一点问题,现象是手机和电脑连接wifi后,都可以正常打开网页看视频。 但是小爱同学和小米盒子,都出现网络问题,不能正常播放音乐或者视频。 这是小米盒子的网络问题截图 这是和小米盒子连接的智能电…

k8s杂记

在node节点内部使用kubectl: rootmultinode-demo-m02:/# ps aux | grep kubelet root 218 3.1 1.6 2066316 62516 ? Ssl 07:35 0:29 /var/lib/minikube/binaries/v1.30.0/kubelet --bootstrap-kubeconfig/etc/kubernetes/bootstrap-kubelet.con…

探索CI/CD:持续集成与持续部署的基本概念

在现代软件开发中,持续集成(CI)和持续部署(CD)已经成为提高开发效率和产品质量的关键实践。本文将详细介绍CI/CD的基本概念、优势以及如何在实际项目中实施CI/CD。 一、什么是持续集成(CI)&…

(35)信号频谱的双边谱与单边谱

文章目录 前言一、仿真代码二、仿真结果画图 前言 本文首先使用MATLAB生成一段余弦信号,然后对其进行FFT变换,首先计算出信号的双边谱,然后在双边谱的基础上计算出信号的单边谱。 一、仿真代码 代码如下: %% 生成余弦波 % 指定…