Docker终极指南:从零开始搭建、配置与深度理解 Nginx 服务

Docker终极指南:从零开始搭建、配置与深度理解 Nginx 服务

前言

在当今的互联网世界,无论您是初出茅庐的开发者、经验丰富的系统管理员,还是充满好奇心的技术爱好者,理解并掌握 Web 服务器技术都是一项至关重要的技能。而在众多 Web 服务器软件中,Nginx 以其卓越的性能、稳定性和丰富的功能,成为了现代网络架构的基石。

本文将以一篇详尽的教程为基础,带您踏上探索 Nginx 的旅程。我们不仅会手把手地指导您如何在 CentOS 和 Ubuntu 这两个主流的 Linux 发行版上安装和配置 Nginx,更将深入剖析其背后的核心概念——从 Web 服务器的基本原理到正向代理与反向代理的精妙之处。本文旨在“授人以渔”,让您在完成搭建后,不仅知其然,更知其所以然。

第一章:Web 服务器的宏观世界

在深入 Nginx 的具体细节之前,我们必须首先建立一个清晰的宏观认知:什么是 Web 服务器?它在浩瀚的互联网中扮演着怎样的角色?

1.1 Web 服务器的核心定义

Web 服务器,通常也被称为“网站服务器”或“WWW (World Wide Web) 服务器”,其本质上是一个安装在计算机上的程序。这个程序的核心使命是“监听”来自网络的请求,并根据请求的内容,“响应”相应的资源。

可以将其想象成一个 24 小时营业的超级图书馆。当您(客户端,通过浏览器)想要查阅一本书(一个网页或文件)时,您向图书馆管理员(Web 服务器)递交一个请求(URL 地址)。管理员会根据您的请求,在馆藏(服务器的硬盘)中找到这本书,然后复印一份(生成响应内容)给您。

这个过程主要遵循 HTTP(超文本传输协议)或其加密版本 HTTPS。

  • 客户端 (Client):通常是用户的网页浏览器(如 Chrome, Firefox),也可以是手机 App、爬虫程序或其他任何能发起网络请求的软件。
  • 服务器 (Server):即运行着 Web 服务器软件(如 Nginx, Apache)的计算机。
  • 请求 (Request):客户端向服务器索要信息的操作,例如“GET /index.html HTTP/1.1”。
  • 响应 (Response):服务器返回给客户端的信息,例如网页的 HTML 代码、图片、CSS 文件或一个错误代码。

所以,Web 服务器的核心功能可以概括为:

  1. 存储资源:存放构成网站的所有文件,包括 HTML、CSS、JavaScript、图片、视频、数据文件等。
  2. 处理请求:接收并解析来自客户端的 HTTP 请求。
  3. 提供内容:根据请求,将存储的静态资源原封不动地发送给客户端,或者将请求传递给其他程序(如应用服务器)处理,再将处理结果返回给客户端。

1.2 WWW:引爆互联网革命的引擎

文章开篇提到,“WWW 是 Inter***(互联网)的多媒体信息查询工具,是 Inter***(互联网)上发展起来的服务,也是发展最快和目前使用最广泛的服务。” 这句话精准地指出了 Web 技术的历史地位。

在 WWW 出现之前,互联网虽然存在,但更多是学者和军方使用命令行工具进行文件传输(FTP)或邮件(SMTP)的工具,使用门槛极高。WWW 的诞生,通过超链接(Hyperlink)和统一资源定位符(URL)将信息组织成一张巨大的网,并通过浏览器这一图形化工具,使得任何人都能轻松地“点击”和“浏览”,极大地降低了信息获取的难度。

正是因为有了 Web 服务器和浏览器这对黄金组合,才催生了近几十年来互联网的爆炸式增长,全球数十亿人得以连接,形成了我们今天所熟知的数字社会。

文中展示了一张百度首页的图片,这便是一个绝佳的例证。

这张图片清晰地展示了百度的搜索界面。当您在浏览器地址栏输入 www.baidu.*** 并回车时,您的浏览器就向百度的 Web 服务器集群发送了一个 HTTP 请求。百度的服务器接收到请求后,返回了构成这个搜索页面的 HTML、CSS、JavaScript 和图片资源,最终由您的浏览器渲染成这个我们所熟悉的交互界面。这背后,正是由成千上万台高性能的 Web 服务器在协同工作。

1.3 静态内容与动态内容

Web 服务器处理的内容主要分为两类:

  • 静态内容:指那些预先制作好、内容固定的文件,如 HTML 页面、图片、CSS 样式表等。对于这类请求,Web 服务器就像一个文件搬运工,直接从硬盘读取文件并发送给客户端,速度极快。
  • 动态内容:指那些需要程序实时生成的内容。例如,您在百度的搜索结果、淘宝的商品列表、微博的信息流,这些内容都是根据您的请求参数、时间、用户身份等因素动态生成的。在这种情况下,Web 服务器通常会扮演一个“二传手”的角色,它自身不处理业务逻辑,而是将请求转发给后端的应用服务器(如 Tomcat, Node.js, PHP-FPM),由应用服务器处理完毕后返回数据,Web 服务器再将这些数据整理成 HTTP 响应格式发送给客户端。

Nginx 在处理静态内容方面效率极高,这也是其广受欢迎的重要原因之一。

第二章:Nginx 深度解析——不止是 Web 服务器

现在,让我们聚焦于今天的主角——Nginx。

2.1 Nginx 是什么?

原文给出了一个非常精准的定义:“Nginx 是一款自由的、开源的、高性能的 HTTP 服务器和反向代理服务器;同时也是一个 IMAP、POP3、SMTP 代理服务器。”

让我们来逐一拆解这个定义:

  • 自由、开源:意味着您可以免费下载、使用、修改甚至分发 Nginx 的源代码,这极大地促进了其社区的发展和生态的繁荣。

  • 高性能:这是 Nginx 最核心的标签。它的高性能源于其独特的架构设计。与传统的 Apache 服务器为每个连接创建一个进程或线程不同,Nginx 采用了基于事件驱动的、异步非阻塞的架构。它可以用极少的几个工作进程(worker process)处理成千上万个并发连接,极大地节省了服务器的内存和 CPU 资源,特别是在高并发场景下优势尽显。这就是著名的“C10K 问题”(即单机如何处理 1 万个并发连接)的优秀解决方案。

  • HTTP 服务器:这是它的本职工作,即作为 Web 服务器发布网站,处理静态文件请求。如下图所示,Nginx 接收来自各种客户端(手机、电脑、平板)的请求,并提供网页浏览服务。

  • 反向代理服务器:这是 Nginx 在现代架构中扮演的更重要的角色。我们稍后会详细展开。

  • 邮件代理服务器:Nginx 也可以代理 IMAP/POP3/SMTP 邮件协议,为邮件系统提供反向代理和负载均衡,虽然这个用途相对较少被提及。

可以这样理解:将 Web 服务器视为一个职业,那么 Nginx 就是这个职业中的一位全能型顶尖高手。

2.2 理解代理:正向代理与反向代理

“代理”(Proxy)一词的本质是“代表某人/某物去执行某个动作”。在网络世界中,代理服务器是客户端和目标服务器之间的中间人。理解正向代理和反向代理的区别,对于掌握 Nginx 的精髓至关重要。

2.2.1 正向代理 (Forward Proxy)

核心:代理客户端,为客户端服务。

原文中用访问谷歌的例子来解释正向代理,非常贴切。

如上图所示,假设您在国内无法直接访问 Google。此时,您可以通过一个 VPN(虚拟专用网络)或其他的代理服务器来访问。整个流程是这样的:

  1. 您的电脑(客户端)向代理服务器发送一个请求:“我想访问 Google”。
  2. 代理服务器收到您的请求后,它代替您,向真正的 Google 服务器发送了请求。
  3. Google 服务器处理请求,将响应内容返回给代理服务器。
  4. 代理服务器再将收到的内容转发给您的电脑。

在这个过程中,有几个关键点:

  • 客户端明确知道目标:您清楚地知道自己想访问的是 Google。
  • 客户端也明确知道自己在用代理:您需要主动配置和连接代理服务器。
  • 目标服务器不知道真实的客户端:对于 Google 来说,它只看到是那台代理服务器在访问它,而不知道这背后其实是您。
  • 典型用途:突破网络限制(翻墙)、为局域网内的设备提供统一的网络出口、访问控制和内容过滤、隐藏客户端身份。

总结一句话:正向代理,“代理”的是客户端,隐藏了真实的客户端。

2.2.2 反向代理 (Reverse Proxy)

核心:代理服务器端,为服务器服务。

原文用访问百度的例子来解释反向代理。

当您访问 www.baidu.*** 时,您的请求首先到达的可能并不是真正处理搜索逻辑的服务器,而是一台或一组 Nginx 反向代理服务器。这台 Nginx 服务器会根据一定的规则,将您的请求“转发”到内部网络中成千上万台应用服务器中的某一台去处理。

在这个过程中:

  • 客户端不知道目标:作为用户,您只知道自己访问的是 www.baidu.***,您完全不知道、也不需要关心背后是哪一台具体的服务器为您提供了服务。这个过程对您是“透明的”。
  • 服务器端被代理:Nginx 代理了后端的真实业务服务器。
  • 典型用途:这是反向代理的精髓所在,也是 Nginx 大放异彩的地方。
    • 负载均衡 (Load Balancing):当后端有多台服务器时,反向代理可以根据预设的策略(如轮询、按权重、按 IP 地址等)将请求分发给这些服务器,避免单台服务器压力过大,提高了整个系统的处理能力和可用性。
    • 安全屏障:只有反向代理服务器暴露在公网上,后端的应用服务器则隐藏在内网中,避免了直接攻击,起到了防火墙的作用。
    • SSL/TLS 卸载:HTTPS 的加解密计算非常消耗 CPU 资源。可以将加解密的工作全部交给前端的 Nginx 来做,后端应用服务器则可以专注于业务逻辑处理,无需再配置复杂的 SSL 证书。
    • 动静分离:Nginx 可以根据请求的 URL,将静态文件(.jpg, .css, .js 等)请求直接自己处理,而将动态请求(.jsp, .php 等)转发给后端的应用服务器。这充分利用了 Nginx 处理静态文件的高性能优势。
    • 数据缓存:Nginx 可以缓存后端服务器返回的内容。对于不经常变化的数据,当再次有相同请求时,Nginx 可以直接返回缓存中的内容,而无需再次请求后端服务器,极大地加快了响应速度并降低了后端负载。

总结一句话:反向代理,“代理”的是服务器,隐藏了真实的服务器。

学到这里,您应该已经对 Nginx 的强大功能有了全面的理论认识。接下来,我们将进入激动人心的实战环节,亲手搭建一个属于自己的 Nginx 服务。

第三章:在 CentOS 7 上安装与配置 Nginx

我们将首先在 CentOS 7 这个广泛使用的企业级 Linux 发行版上进行操作。

3.1 准备工作:检查与卸载旧版本

在安装新软件之前,一个良好的习惯是检查系统上是否已存在旧版本,以避免潜在的冲突。

步骤 1:检查 Nginx 进程

打开您的终端,输入以下命令:

ps -ef | grep nginx

这个命令会列出系统中所有正在运行的进程,并通过管道符 | 将结果传递给 grep nginx,从而筛选出包含 “nginx” 关键字的进程。

  • ps -ef: ps 是 process status 的缩写,-e 显示所有进程,-f 提供完整的格式化输出。

如下图所示,如果命令执行后,除了您刚刚输入的 grep 命令本身之外,没有任何其他输出,那么恭喜您,您的系统是干净的,可以直接跳到安装步骤。

步骤 2:处理已存在的 Nginx

如果您的输出类似下图,显示了 nginx: master processnginx: worker process 等行,说明系统上已经有一个 Nginx 实例在运行。

在卸载之前,我们需要先停止它。最直接的方法是杀死主进程 (master process)。在图中,主进程的 PID (Process ID) 是 19085。执行:

kill 19085

注意:请将 19085 替换为您自己看到的 master 进程的 PID。

步骤 3:卸载 Nginx 软件包

如果您的 Nginx 是通过 yum(CentOS 的包管理器)安装的,那么卸载它就非常简单。执行以下命令:

yum remove nginx

系统会提示您将要卸载的软件包以及相关的依赖,输入 y 并回车确认即可。

这张截图展示了 yum remove nginx 命令的执行过程,系统确认了要移除的 nginx 包,并在用户同意后完成了卸载操作。

3.2 通过 Yum 源安装 Nginx

CentOS 默认的软件仓库中可能不包含最新版本的 Nginx,或者根本不包含 Nginx。因此,最佳实践是添加 Nginx 官方提供的 yum 仓库,这样我们就能安装到最新、最稳定的版本。

步骤 1:添加 Nginx 官方源

执行以下命令,该命令会下载并安装一个 RPM 包,这个包的作用是在您的系统中配置好 Nginx 的 yum 仓库信息。

rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
  • rpm: Red Hat Package Manager,是 CentOS/RHEL 系列的软件包管理工具。
  • -Uvh: -U 表示升级或安装(Upgrade),-v 表示显示详细过程(Verbose),-h 表示以 # 形式显示安装进度(Hash)。

命令执行成功后,您会看到类似下图的输出,提示正在准备并安装 nginx-release 包。

步骤 2:验证源文件是否添加成功

我们可以检查一下 yum 的仓库配置目录,看看是否多出了 Nginx 的配置文件。

cd /etc/yum.repos.d/
ls

执行后,您应该能看到一个名为 nginx.repo 的新文件,如下图所示。这个文件告诉了 yum 在安装 Nginx 时应该去哪里下载。

步骤 3:构建缓存以加速下载

为了让新添加的仓库生效,并提高后续的下载速度,我们建议执行一次缓存构建命令:

yum makecache

该命令会下载仓库的元数据(包含软件包列表、依赖关系等),并缓存在本地。


上图显示了 yum makecache 命令正在从各个配置好的源(包括我们刚刚添加的 nginx 源)下载元数据,并生成缓存。

步骤 4:安装 Nginx

万事俱备,现在只需一条命令即可完成 Nginx 的安装:

yum install nginx -y
  • -y: 表示在安装过程中遇到所有询问都自动回答“是”,省去了手动确认的步骤。

安装过程会下载 Nginx 及其依赖的软件包,并自动完成配置。安装成功后,会显示 “***plete!” 的字样。

3.3 启动与验证 Nginx 服务

安装完成后,Nginx 并不会自动启动。我们需要手动启动它,并进行验证。

步骤 1:检查 Nginx 状态

再次运行我们熟悉的命令:

ps -ef | grep nginx

如下图所示,此时应该还是没有任何 Nginx 进程在运行。

步骤 2:手动启动 Nginx

我们可以先查看一下刚刚安装的 Nginx 版本:```bash
nginx -v

然后,直接在命令行输入 `nginx` 即可启动服务:```bash
nginx

这个命令会以后台守护进程的方式启动 Nginx。启动后不会有任何提示,光标会直接回到下一行。此时,再次运行 ps -ef | grep nginx,您就应该能看到 masterworker 进程了,如下图所示。

步骤 3:通过浏览器访问

现在,打开您本地电脑的浏览器,在地址栏输入您云服务器的公网 IP 地址。如果一切顺利,您应该能看到 Nginx 的欢迎页面!


这个页面的出现,标志着您的 Nginx Web 服务器已经成功搭建并运行在公网上。

常见问题:无法访问?
如果您无法看到这个页面,99% 的可能性是服务器的防火墙拦截了访问。Web 服务默认使用 80 端口(HTTP),您需要在服务器的安全组或防火墙设置中,放行 80 端口的入站流量。

对于 CentOS 7 默认的 firewalld 防火墙,您可以执行以下命令开放 80 端口:

# 添加 80 端口到 public 区域(永久生效)
sudo firewall-cmd --permanent --zone=public --add-service=http
# 或者直接添加端口
# sudo firewall-cmd --permanent --zone=public --add-port=80/tcp

# 重新加载防火墙规则使其生效
sudo firewall-cmd --reload

3.4 Nginx 配置文件与首页修改

知其然,更要知其所以然。让我们来探索一下 Nginx 的配置文件,看看它是如何工作的,并尝试修改默认的欢迎页面。

步骤 1:定位主配置文件

通过 yum 安装的 Nginx,其配置文件通常位于 /etc/nginx/ 目录下。

cd /etc/nginx/
ls -l

您会看到一系列文件和目录,其中最核心的是 nginx.conf

步骤 2:分析配置文件结构

我们用 catvim 查看 nginx.conf 文件的内容。您会发现,这个文件定义了 Nginx 的全局行为,比如运行用户、工作进程数等。而在 http 块的末尾,有一行非常关键的代码:

include /etc/nginx/conf.d/*.conf;

这行代码的意思是:加载 /etc/nginx/conf.d/ 目录下所有以 .conf 结尾的文件。这是一种模块化的配置方式,使得我们可以为不同的网站创建不同的配置文件,而无需修改主配置文件,便于管理。

步骤 3:探究默认的服务器配置

我们进入 /etc/nginx/conf.d/ 目录,会发现一个 default.conf 文件。这个文件定义了我们刚刚访问的那个默认网站的行为。让我们查看它的内容。

在这张截图中,我们看到了几个关键指令:

  • server { ... }: 定义了一个虚拟主机(一个网站)。
  • listen 80;: 表示这个虚拟主机监听 80 端口。这就是为什么我们通过 HTTP 访问能看到它。
  • server_name localhost;: 定义了服务器的名称。
  • root /usr/share/nginx/html;: 这是核心! 它指定了该网站的根目录。也就是说,当用户访问时,Nginx 会到这个目录下寻找文件。
  • location / { ... }: 定义了如何处理对根路径 (/) 的请求。

步骤 4:找到并修改首页文件

根据 root 指令的路径,我们来到 /usr/share/nginx/html 目录。

cd /usr/share/nginx/html
ls

您会看到 index.html50x.html 两个文件。index.html 就是我们看到的那个欢迎页面。

现在,我们使用文本编辑器(如 vim)来修改它。

vim index.html

找到 <h1>Wel***e to nginx!</h1> 这一行,把它修改成您想要的任何内容,比如 <h1>Hello, My First Nginx!</h1>

保存并退出 vim。此时,无需重启 Nginx,直接刷新您的浏览器页面,您会惊喜地发现,网页内容已经变成了您修改后的样子!

这个简单的修改,完整地展示了从“请求 URL”到“Nginx 配置文件”再到“服务器磁盘文件”的整个工作流程。

3.5 Nginx 常用命令

  • nginx:启动 Nginx。
  • nginx -s stop:快速停止 Nginx。
  • nginx -s quit:优雅地停止 Nginx(等待所有请求处理完毕)。
  • nginx -s reload:重新加载配置文件(这是最常用的命令,当您修改了配置文件后,执行此命令使配置生效,服务不会中断)。
  • nginx -t:测试配置文件是否有语法错误。在执行 reload 前,先执行此命令是一个好习惯。

推荐使用 systemd 来管理服务,因为它更现代化、功能更强大:

  • sudo systemctl start nginx:启动
  • sudo systemctl stop nginx:停止
  • sudo systemctl restart nginx:重启
  • sudo systemctl reload nginx:重新加载配置
  • sudo systemctl status nginx:查看状态
  • sudo systemctl enable nginx:设置开机自启

第四章:在 Ubuntu 上安装与配置 Nginx

接下来,我们将在另一个非常流行的 Linux 发行版——Ubuntu 上重复这个过程。虽然大同小异,但在包管理和文件路径上会有一些区别。

4.1 准备工作:检查与卸载旧版本

步骤 1:检查 Nginx 进程

与 CentOS 一样,我们首先检查进程:

ps -ef|grep nginx

下图中,我们可以看到 Nginx 正在运行,主进程 PID 为 2318。

步骤 2:停止并卸载 Nginx

首先,杀死正在运行的 Nginx 进程。```bash
kill 2318

或者更稳妥的方式

sudo kill 2318```

接下来是卸载。在 Ubuntu 上,包管理器是 apt。我们需要先确定 Nginx 是如何安装的。

方法一:通过 apt 源安装的 Nginx

我们可以用 dpkg 命令来查询软件包信息:

dpkg -l | grep nginx

如果能看到类似下图的输出,说明 Nginx 是通过 apt 系统安装的。

对于这种情况,卸载非常简单,执行以下命令即可彻底清除 Nginx 及其配置文件和依赖:

sudo apt --purge autoremove nginx
  • --purge: 表示不仅卸载软件包,还要删除其全局配置文件。
  • autoremove: 表示同时移除作为依赖项安装且现在不再需要的软件包。

方法二:非 apt 方式安装的 Nginx (如编译安装)

如果 dpkg -l 查不到信息,或者您知道 Nginx 是通过编译等其他方式安装的,那么卸载过程会复杂一些,需要手动删除相关文件。原文提供了一个非常详尽的手动卸载步骤,这对于处理一些“疑难杂症”非常有用。

  1. 找出所有 Nginx 相关文件位置

    which nginx   # 查找可执行文件
    whereis nginx # 查找二进制、源码和 man 页面
    
  2. 删除可执行文件或符号链接

    sudo rm -f /usr/sbin/nginx /usr/bin/nginx
    
  3. 再次确认并杀死所有 Nginx 进程

    sudo pkill -9 nginx
    
  4. 清除 systemd 服务文件(如果存在):

    sudo rm -f /etc/systemd/system/nginx.service
    sudo systemctl daemon-reload
    
  5. 删除其他相关目录(这步要非常小心,确保不会误删):

    sudo rm -rf /etc/nginx
    sudo rm -rf /var/log/nginx
    sudo rm -rf /var/cache/nginx
    
  6. 最终验证

    which nginx
    nginx -v
    

    如果命令都提示找不到,说明卸载干净了。如下图所示,which nginx 没有任何输出,表示已成功卸载。

4.2 通过 Apt 源安装 Nginx

在 Ubuntu 上通过 apt 安装 Nginx 非常直接。

步骤 1:更新软件包列表

在安装任何新软件前,都应该先更新本地的软件包索引,以确保能获取到最新的版本信息。

sudo apt update

步骤 2:安装 Nginx

执行安装命令:

sudo apt install nginx -y

apt 会自动处理所有依赖关系并完成安装。

4.3 启动与验证 Nginx 服务

步骤 1:检查服务状态

通过 apt 安装的服务通常会自动启动。我们可以用 ps 命令或 systemd 命令来验证。

ps -ef | grep nginx

如下图所示,安装完成后,Nginx 的 master 和 worker 进程已经在运行了。

步骤 2:查看版本

我们可以通过指定完整路径来查看 Nginx 版本:

/usr/sbin/nginx -v

小贴士:关于环境变量 PATH
如果在终端直接输入 nginx -v 提示命令找不到,这可能是因为 /usr/sbin 目录不在当前用户的 PATH 环境变量中。PATH 变量告诉系统去哪些目录寻找可执行文件。
我们可以通过 which nginx 找到其绝对路径。

如果需要,可以将其永久添加到 PATH

echo 'export PATH=$PATH:/usr/sbin' >> ~/.bashrc
source ~/.bashrc

这样,下次登录时就可以直接使用 nginx 命令了。

步骤 3:浏览器访问

同样,在浏览器中输入您的 Ubuntu 服务器的公网 IP。这时,您可能会看到一个与 CentOS 不同的欢迎页面,上面写着 “Wel***e to nginx!” 并包含一些 Ubuntu 的信息。

有时候,特别是在一个已经安装了 Apache 的系统上,您可能会看到一个默认的 Apache 或 Ubuntu 的占位页面,如下图所示。

这通常是因为默认的虚拟主机配置指向了另一个目录。接下来,我们将学习如何修改它,让它显示我们想要的 Nginx 默认页面。

4.4 Nginx 配置文件与首页修改 (Ubuntu 版)

Ubuntu 上的 Nginx 配置文件结构与 CentOS 略有不同,更加模块化。

步骤 1:定位主配置文件

主配置文件仍然是 /etc/nginx/nginx.conf

cd /etc/nginx

步骤 2:分析配置文件结构

查看 nginx.conf 文件,您会发现它的 include 指令与 CentOS 有所不同:

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;

这里的 sites-enabled 是 Ubuntu/Debian 系 Nginx 配置的特色。其设计哲学是:

  • /etc/nginx/sites-available/:存放所有可用的网站配置文件(每个网站一个文件)。
  • /etc/nginx/sites-enabled/:存放一个符号链接(shortcut),链接到 sites-available 中你想要“激活”的网站配置文件。

这种方式使得启用或禁用一个网站变得非常简单,只需在 sites-enabled 目录中创建或删除一个符号链接即可,而无需修改配置文件本身。

步骤 3:探究默认的服务器配置

我们进入 sites-enabled 目录查看。

cd /etc/nginx/sites-enabled/
ls -l

您会看到一个名为 default 的文件,它是一个指向 ../sites-available/default 的符号链接。

我们编辑这个 default 文件(实际上就是编辑 sites-available/default):

sudo vim default

在文件中,找到 root 指令。如果它指向的是 /var/www/html,这就是导致您看到 Ubuntu 默认页面的原因。我们需要将其修改为 Nginx 的标准 Web 根目录 /usr/share/nginx/html

修改前:root /var/www/html;
修改后:root /usr/share/nginx/html;

步骤 4:重新加载配置并验证

修改配置文件后,必须让 Nginx 重新加载它才能生效。

sudo nginx -s reload

现在,再次刷新您的浏览器。页面应该已经变回了我们熟悉的 Nginx 官方欢迎页面。

步骤 5:修改首页内容

这个步骤和 CentOS 完全一样。我们进入新的根目录 /usr/share/nginx/html,编辑 index.html 文件,将内容修改为您喜欢的文字。

cd /usr/share/nginx/html
sudo vim index.html
# ...进行修改...

修改保存后,再次刷新浏览器,即可看到您的自定义内容。这表明您已经完全掌握了在 Ubuntu 上定位和修改 Nginx 网站内容的方法。


这张截图展示了最终的成果:一个成功运行在 Ubuntu 服务器上,并显示着自定义内容的 Nginx 欢迎页面。

第五章:总结与展望

恭喜您!通过跟随本篇详尽的指南,您不仅成功地在 CentOS 和 Ubuntu 两个主流平台上从零开始搭建了 Nginx 服务,更重要的是,您深入理解了其背后的核心概念:

  • Web 服务器的本质:掌握了客户端-服务器模型,以及 HTTP 协议在其中的作用。
  • Nginx 的多重身份:理解了 Nginx 不仅仅是一个高性能的 HTTP 服务器,更是在现代架构中扮演着反向代理、负载均衡器、安全网关等关键角色。
  • 代理的辨析:清晰地区分了正向代理(为客户端服务)和反向代理(为服务器服务)的根本区别和应用场景。
  • 动手实践能力:获得了检查、卸载、安装、配置和管理 Nginx 服务的全套实战技能,并学会了如何排查如防火墙等常见问题。
  • 配置文件解读:能够深入到 Nginx 的配置文件中,理解其模块化结构,并能通过修改 root 等关键指令来改变服务器的行为。

您今天搭建的这个简单的 Web 服务器,是通往更广阔世界的第一步。以此为基础,您可以继续探索 Nginx 的更多高级功能:

  • 配置虚拟主机:在同一台服务器上托管多个不同的网站。
  • 启用 HTTPS:使用 Let’s Encrypt 等工具为您的网站配置免费的 SSL 证书,实现数据加密传输。
  • 反向代理与负载均衡:搭建后端应用集群,实现高可用和高性能的 Web 服务。
  • URL 重写:使用 Nginx 强大的 rewrite 模块实现 URL 的美化和重定向。
  • 性能调优:学习如何根据服务器硬件和业务需求,调整 Nginx 的工作进程数、连接数等参数,榨干服务器的最后一滴性能。

互联网技术日新月异,但其底层逻辑和核心组件却相对稳定。今天您对 Nginx 的深入学习和实践,无疑是为您的技术武器库增添了一件削铁如泥的利器。希望这篇文章能成为您探索 Nginx 乃至整个后台技术世界的坚实基石。继续探索,继续编码,未来的网络世界由您构建!

转载请说明出处内容投诉
CSS教程网 » Docker终极指南:从零开始搭建、配置与深度理解 Nginx 服务

发表评论

欢迎 访客 发表评论

一个令你着迷的主题!

查看演示 官网购买