Docker从零开始搭建、配置与深度理解 Nginx 服务(探索Nginx的旅程)
作者:Undoom
前言
在当今的互联网世界,无论您是初出茅庐的开发者、经验丰富的系统管理员,还是充满好奇心的技术爱好者,理解并掌握 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 服务器的核心功能可以概括为:
- 存储资源:存放构成网站的所有文件,包括 HTML、CSS、JavaScript、图片、视频、数据文件等。
- 处理请求:接收并解析来自客户端的 HTTP 请求。
- 提供内容:根据请求,将存储的静态资源原封不动地发送给客户端,或者将请求传递给其他程序(如应用服务器)处理,再将处理结果返回给客户端。
1.2 WWW:引爆互联网革命的引擎
文章开篇提到,“WWW 是 Internet(互联网)的多媒体信息查询工具,是 Internet(互联网)上发展起来的服务,也是发展最快和目前使用最广泛的服务。” 这句话精准地指出了 Web 技术的历史地位。
在 WWW 出现之前,互联网虽然存在,但更多是学者和军方使用命令行工具进行文件传输(FTP)或邮件(SMTP)的工具,使用门槛极高。WWW 的诞生,通过超链接(Hyperlink)和统一资源定位符(URL)将信息组织成一张巨大的网,并通过浏览器这一图形化工具,使得任何人都能轻松地“点击”和“浏览”,极大地降低了信息获取的难度。
正是因为有了 Web 服务器和浏览器这对黄金组合,才催生了近几十年来互联网的爆炸式增长,全球数十亿人得以连接,形成了我们今天所熟知的数字社会。
文中展示了一张百度首页的图片,这便是一个绝佳的例证。

这张图片清晰地展示了百度的搜索界面。当您在浏览器地址栏输入 www.baidu.com 并回车时,您的浏览器就向百度的 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(虚拟专用网络)或其他的代理服务器来访问。整个流程是这样的:
- 您的电脑(客户端)向代理服务器发送一个请求:“我想访问 Google”。
- 代理服务器收到您的请求后,它代替您,向真正的 Google 服务器发送了请求。
- Google 服务器处理请求,将响应内容返回给代理服务器。
- 代理服务器再将收到的内容转发给您的电脑。
在这个过程中,有几个关键点:
- 客户端明确知道目标:您清楚地知道自己想访问的是 Google。
- 客户端也明确知道自己在用代理:您需要主动配置和连接代理服务器。
- 目标服务器不知道真实的客户端:对于 Google 来说,它只看到是那台代理服务器在访问它,而不知道这背后其实是您。
- 典型用途:突破网络限制、为局域网内的设备提供统一的网络出口、访问控制和内容过滤、隐藏客户端身份。
总结一句话:正向代理,“代理”的是客户端,隐藏了真实的客户端。
2.2.2 反向代理 (Reverse Proxy)
核心:代理服务器端,为服务器服务。
原文用访问百度的例子来解释反向代理。

当您访问 www.baidu.com 时,您的请求首先到达的可能并不是真正处理搜索逻辑的服务器,而是一台或一组 Nginx 反向代理服务器。这台 Nginx 服务器会根据一定的规则,将您的请求“转发”到内部网络中成千上万台应用服务器中的某一台去处理。
在这个过程中:
- 客户端不知道目标:作为用户,您只知道自己访问的是
www.baidu.com,您完全不知道、也不需要关心背后是哪一台具体的服务器为您提供了服务。这个过程对您是“透明的”。 - 服务器端被代理: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 process 和 nginx: 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 及其依赖的软件包,并自动完成配置。安装成功后,会显示 “Complete!” 的字样。

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,您就应该能看到 master 和 worker 进程了,如下图所示。

步骤 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:分析配置文件结构
我们用 cat 或 vim 查看 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.html 和 50x.html 两个文件。index.html 就是我们看到的那个欢迎页面。

现在,我们使用文本编辑器(如 vim)来修改它。
vim index.html
找到 <h1>Welcome 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 是通过编译等其他方式安装的,那么卸载过程会复杂一些,需要手动删除相关文件。原文提供了一个非常详尽的手动卸载步骤,这对于处理一些“疑难杂症”非常有用。

找出所有 Nginx 相关文件位置:
which nginx # 查找可执行文件 whereis nginx # 查找二进制、源码和 man 页面
删除可执行文件或符号链接:
sudo rm -f /usr/sbin/nginx /usr/bin/nginx
再次确认并杀死所有 Nginx 进程:
sudo pkill -9 nginx
清除 systemd 服务文件(如果存在):
sudo rm -f /etc/systemd/system/nginx.service sudo systemctl daemon-reload
删除其他相关目录(这步要非常小心,确保不会误删):
sudo rm -rf /etc/nginx sudo rm -rf /var/log/nginx sudo rm -rf /var/cache/nginx
最终验证:
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 不同的欢迎页面,上面写着 “Welcome 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 乃至整个后台技术世界的坚实基石。继续探索,继续编码,未来的网络世界由您构建!
到此这篇关于Docker从零开始搭建、配置与深度理解 Nginx 服务(探索Nginx的旅程)的文章就介绍到这了,更多相关docker nginx服务内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
