前言
在互联网技术飞速发展的当下,企业信息化应用几乎都以网页形式构建,掌握 Web 核心技术与服务器环境部署能力,成为从事互联网技术相关工作的必备基础。本文将从 Web 基础概念出发,详细讲解域名与 DNS、网页与 HTML、静态 / 动态网页的核心知识,深入剖析 HTTP 协议的工作原理,最后完整介绍 Nginx 服务器的编译安装、配置与运行控制,帮助读者搭建起完整的 Web 技术与服务器部署知识体系,适合 Web 开发、运维入门学习者参考。
一、Web 基础核心概念
Web 技术的核心围绕网络资源访问与网页交互展开,而域名、DNS、Hosts 文件则是实现网络资源定位的基础,是理解 Web 技术的第一步。
1.1 域名与 DNS 原理
网络中所有主机通过 TCP/IP 协议通信,每台主机都有唯一的 IP 地址,作为网络身份标识。IP 地址由 32 比特二进制数转换的 4 个小于 256 的数字组成,如 100.10.0.1,但数字型 IP 地址难以记忆和书写,因此诞生了字符型的域名,与 IP 地址一一对应,成为网络资源的 "门牌号码"。
1.1.1 域名的结构与规范
域名采用层级化结构,从右到左级别依次降低,以www.baidu.com为例,最右侧的com是顶级域名 ,中间的baidu是二级域名 ,最左侧的www是主机名。DNS 规定域名标号仅能由英文字母、数字和连字符-组成,单个标号不超过 63 个字符,完整域名总长度不超过 255 个字符,且不区分大小写。
顶级域名分为组织域和国家 / 地区域名:组织域如com(商业机构)、net(网络组织)、org(非营利组织);国家 / 地区域名为两位字母编码,如cn(中国)、uk(英国)、jp(日本),其中cn是中国专用顶级域名。而FQDN(完全合格域名) 是主机名加全路径,能精准表示主机在域名树中的位置,是主机名的完整表示形式。
1.1.2 根域与根服务器
根域是域名体系的最顶层,由根服务器管理,全世界仅有 13 台根服务器,1 台主根服务器位于美国,12 台辅根服务器中 9 台在美国、2 台在欧洲(英国、瑞典)、1 台在亚洲(日本),所有根服务器由 ICANN(互联网域名与号码分配机构)统一管理,负责全球域名根服务器、域名体系和 IP 地址的统筹管理。
1.2 Hosts 文件的作用与修改
Hosts 文件是存储网络节点信息的本地文件,可将主机名映射到对应 IP 地址,实现本地 DNS 解析功能,且请求级别高于公共 DNS 服务器。系统在发起 DNS 请求前,会先检查 Hosts 文件中的域名 - IP 映射,若存在则直接使用,无则向 DNS 服务器发起解析,这一机制能大幅提高常用域名的解析效率。
不同系统的 Hosts 文件存储路径不同:
- Windows 系统:
c:\windows\system32\drivers\etc\hosts,可通过记事本编辑; - CentOS 系统:
/etc/hosts,可通过vim /etc/hosts命令编辑。
例如在 Hosts 文件中添加127.0.0.1 www.baidu.com,访问该域名时,系统会直接指向本地回环地址,而非通过 DNS 解析真实 IP。
1.3 DNS 域名解析系统
DNS(域名系统)是实现域名与 IP 地址动态转换的核心系统,机器间仅能识别 IP 地址,域名解析就是将易记的域名转换为机器可识别的 IP 地址的过程,分为静态映射 和动态映射两种方式:
- 静态映射:在每台设备上独立配置域名 - IP 映射表,仅供本设备使用,Hosts 文件就是典型的静态映射方式;
- 动态映射:在专用 DNS 服务器上集中配置映射表,网络设备通过向 DNS 服务器查询获取 IP 地址,是互联网的主流解析方式。
域名解析的优先级为:静态域名解析(Hosts)→ 动态域名解析(DNS)。在 Windows 命令行中,可通过nslookup www.baidu.com命令查询域名对应的 IP 地址,验证 DNS 解析结果。
1.4 域名注册流程
域名具有唯一性,遵循先申请先注册原则,管理机构不进行第三方权利实质审查,注册信息以申请人提交的订单为准,成功 24 小时后可在 ICANN(国际)、CNNIC(国内)查询 whois 信息(域名所有者、注册时间等)。完整的域名注册步骤如下:
- 准备申请资料 :
com等国际域名无需身份证 / 营业执照;cn等国内域名需提供个人身份证或企业营业执照; - 寻找正规注册平台:选择经 ICANN、CNNIC 授权的顶级域名注册服务机构,若平台双认证,则可一站式注册不同后缀域名;
- 域名查询:在注册平台注册用户名后,查询目标域名是否已被注册,确认可注册后选择并提交;
- 正式申请:缴纳域名年费,完成提交;
- 申请成功:进入 DNS 解析管理界面,设置解析记录,即可将域名指向对应服务器 IP。
二、网页与 HTML 基础
网页是构成网站的基本元素,是承载网络应用的核心平台,而 HTML(超文本标记语言)是编写网页的标准语言,所有网页都基于 HTML 构建。
2.1 网页的核心概念与组成
网页是存储在联网服务器上的文件,通过网址(URL)识别和存取,一个完整的网页可包含文本、图像、Flash 动画、声音、视频、表格、导航栏、交互式表单等内容,各部分承担不同功能:
- 文本:网页核心信息载体,传递核心内容;
- 图像 / 动画 / 音视频:丰富网页表现形式,提升用户体验;
- 表格:控制页面信息布局,让内容更规整;
- 导航栏:由超链接组成,实现网站内页面跳转;
- 交互式表单:连接服务器与客户端,实现用户数据提交(如登录、注册表单)。
与网页相关的核心概念需明确区分:
- 域名:浏览网页时输入的网址,是网络资源的访问标识;
- HTTP :传输网页的通信协议,访问域名时需添加
http://前缀; - URL:万维网寻址系统,标识网络资源的位置路径;
- HTML:编写网页的超文本标记语言,是网页的基础语法;
- 超链接:实现网站内 / 跨网站页面跳转的核心元素;
- 发布:将制作好的网页上传到服务器,供全网用户访问的过程。
网站 是由多个网页、程序或其他文件组成的内容集合,拥有独立域名和存放空间;主页(首页) 是用户访问域名时默认打开的网页,通常为网站的目录页,引导用户浏览其他内容。
2.2 HTML 超文本标记语言
HTML 是编写网页的标准规范,通过标记符 标记网页的各个部分,告诉浏览器如何显示内容(如文字格式、图片位置、页面布局)。网页文件本质是文本文件,添加 HTML 标记符后,将后缀改为.html或.htm即可成为可被浏览器解析的网页文件。
浏览器解析 HTML 文件时,会按顺序读取标记符并渲染内容,对书写错误的标记符不会报错或停止执行,开发者需通过页面显示效果排查问题。需注意的是,不同浏览器对同一标记符的解释可能存在差异,会导致页面显示效果不同,这也是网页兼容性开发的核心难点。
HTML 文件可通过任何文本编辑器(如记事本、Vim、VS Code)编辑,无需专用开发工具,入门门槛极低。
2.3 HTML 的基本语法与文件结构
2.3.1 HTML 语法规则
HTML 标记符主要采用双标记符 形式,由开始标记<XXX>和结束标记</XXX>组成,标记符之间的内容为被描述对象,如<p>这是一段文本</p>表示一个段落。部分简单标记可采用单标记符(如<br/>表示换行),但双标记符是主流形式。
2.3.2 基本文件结构
HTML 文件的最外层由<html></html>标记,表明该文件为 HTML 格式,内部包含并列的头标签<head>和 内容标签<body>,这是 HTML 文件的基础骨架,完整结构如下:
<html>
<head>
<!-- 网页描述信息,如标题、元数据 -->
<title>网页标题</title>
</head>
<body>
<!-- 网页实际显示的内容,如文本、图片、表单 -->
这是网页正文内容
</body>
</html>
头标签<head>用于定义网页的描述信息,不直接显示在页面中,常用子标签包括<title>(网页标题)、<meta>(元数据,如编码、关键词)、<link>(关联外部资源,如 CSS 文件)、<script>(引入脚本文件,如 JavaScript)等;内容标签<body>包含网页的所有可视内容,常用子标签包括<a>(超链接)、<table>(表格)、<tr>(表格行)、<font>(字体)等。
2.4 Web1.0 与 Web2.0 的发展与区别
互联网的发展经历了 Web1.0 和 Web2.0 两个核心阶段,二者在内容生产、用户交互、盈利模式上存在本质区别,推动了互联网从 "信息展示" 向 "用户参与" 的转变。
2.4.1 Web1.0:门户网站主导的信息时代
Web1.0 是早期互联网模式,以新浪、搜狐、网易等门户网站为核心,内容由网站运营商单方面提供,用户仅能被动浏览信息,核心盈利手段为广告、增值服务,依托巨大的点击量和用户数实现商业价值。
Web1.0 的核心特征是技术创新主导,新浪依托技术平台、腾讯依托即时通讯技术、盛大依托网络游戏技术发展,网站创始阶段的技术属性极强,充分体现了互联网的 "眼球经济" 特征。
2.4.2 Web2.0:用户主导的内容创作时代
Web2.0 是相对于 Web1.0 的新一代互联网模式,以用户主导生成内容(UGC) 为核心,代表产品有博客、社交网站、短视频平台等,打破了运营商对内容的垄断,实现了用户的主动参与和互动。
Web2.0 的核心特征包括:
- 用户分享:用户可不受时间、地域限制,发布和分享观点、内容,既可以获取信息,也可以创造信息;
- 兴趣聚合的社群:用户因共同兴趣聚集形成社群,实现了互联网的精准细分市场;
- 开放的平台与活跃的用户:平台对用户开放,用户因兴趣保持高忠诚度,积极参与平台内容创作和互动。
Web2.0 的出现让互联网从 "中心化" 走向 "去中心化",成为真正的互动型网络,也是当前互联网的主流模式。
三、静态网页与动态网页
根据网页内容的生成方式和交互性,可将网页分为静态网页 和动态网页,二者在技术实现、文件格式、应用场景上差异显著,是 Web 开发的核心分类。
3.1 静态网页
纯粹由 HTML 格式编写的网页称为静态网页 ,文件扩展名为.htm、.html,是网站建设的基础,早期网站均由静态网页构成。
静态网页的核心特征是:页面代码生成后,内容和显示效果固定不变,除非手动修改 HTML 代码。需要注意的是,静态网页可通过 GIF 动画、Flash、滚动字幕等实现视觉上的 "动态效果",但这并非真正的动态网页,仅为页面表现形式的优化,其底层代码仍为静态 HTML。
静态网页的优点是开发简单、访问速度快、服务器压力小;缺点是内容更新繁琐,需手动修改每个页面的代码,无法实现用户交互和数据动态展示,适合内容固定、更新频率低的场景(如企业官网的介绍页面)。
3.2 动态网页
动态网页 是相对静态网页的编程技术,核心特征是:页面代码固定,但显示内容可随时间、环境、数据库操作结果动态变化,能实现用户与服务器的交互式操作,是当前主流的网页开发模式。
动态网页的 URL 后缀并非.htm、.html等静态格式,而是以.aspx、.asp、.jsp、.php、.cgi等为后缀,且网址中通常包含标志性符号?,用于传递请求参数(如http://www.test.com/a.php?id=123)。
动态网页是HTML 语法 与高级程序设计语言 、数据库技术的融合,通过 Java、PHP、C# 等语言实现业务逻辑,通过 MySQL、Oracle 等数据库存储和读取数据,实现对网站内容的高效、动态管理。从技术层面来讲,凡是结合了 HTML 以外的高级语言和数据库技术的网页,都属于动态网页。
动态网页的优点是内容可动态更新、支持用户交互(如登录、注册、查询、提交数据)、可实现个性化展示;缺点是开发复杂度高、对服务器配置要求更高、访问速度略低于静态网页,适合内容更新频繁、需要用户交互的场景(如电商平台、社交网站、管理系统)。
3.3 主流动态网页编程语言
早期动态网页主要采用 CGI(通用网关接口)技术,但 CGI 编程困难、效率低下、修改复杂,已逐渐被新技术取代。当前主流的动态网页编程语言各有特点,适用于不同的开发场景,核心包括:
- PHP:超文本预处理器,语法借鉴 C、Java、PERL,入门门槛低、开发效率高,跨平台性好,可与 Apache、Nginx 完美配合,是当前互联网最主流的动态网页脚本语言,广泛应用于中小型网站、电商平台;
- JSP:Java 服务器页面,基于 Java Servlet 和 Java 体系开发,具有跨平台、安全性高、可移植性强的特点,适合开发大型、高并发的企业级应用(如金融、电商平台的核心系统);
- Python:面向对象、跨平台的动态语言,语法简洁、易读性高,除了网页开发,还广泛应用于爬虫、数据分析、人工智能等领域,主流 Web 框架有 Django、Flask,适合快速开发轻量级 Web 应用;
- Ruby:简单快捷的面向对象脚本语言,由日本人松本行弘开发,语法优雅,主流 Web 框架为 Ruby on Rails,以 "约定优于配置" 为核心,开发效率极高,适合快速迭代的创业项目。
四、HTTP 协议核心解析
HTTP(超文本传输协议)是互联网上应用最广泛的网络协议,所有网页文件都必须遵循该标准,设计初衷是为了提供发布和接收 HTML 页面的方法,核心采用请求 / 响应模型,实现客户端(浏览器)与服务器的通信。
4.1 HTTP 协议的版本发展
HTTP 协议经过多年演化,推出了多个版本,大部分版本向下兼容,核心版本包括:
- HTTP/0.9:已完全过时,仅支持 GET 一种请求方法,未指定协议版本号,不支持请求头,无法通过 POST 方法向服务器传递大量信息,功能极度简化;
- HTTP/1.0:第一个在通信中指定版本号的版本,至今仍被广泛采用(尤其是代理服务器),支持 GET、POST、HEAD 等多种请求方法,增加了请求头和响应头,实现了更丰富的通信功能;
- HTTP/1.1 :当前主流的协议版本,默认采用持久连接 ,避免了每次请求都建立 TCP 连接的开销,能与代理服务器良好配合;同时支持管道方式,可同时发送多个请求,降低线路负载,大幅提高传输速度,是目前浏览器和服务器的默认通信协议。
4.2 HTTP 核心请求方法
HTTP 支持多种请求命令(称为 HTTP 方法),每条请求报文都包含一个方法,告诉服务器执行具体动作(如获取资源、存储资源、删除资源)。其中GET 和POST是最常用的两种方法,几乎所有的网页交互都基于这两种方法实现,其他方法还包括 PUT、DELETE、HEAD 等,核心方法的功能描述如下:
- GET:请求获取 Request-URI 所标识的资源,是最常用的方法,用于查询、获取数据;
- POST:在 Request-URI 所标识的资源后附加新的数据,用于向服务器提交数据(如表单、文件);
- PUT:请求服务器存储一个资源,并用 Request-URI 作为其标识,用于新增、修改资源;
- DELETE:请求服务器删除 Request-URI 所标识的资源,用于删除数据;
- HEAD:请求获取资源的响应消息报头,仅返回报头信息,不返回实体内容,用于验证资源是否存在。
GET 与 POST 方法的核心区别
GET 和 POST 方法的使用场景和特性差异显著,是 Web 开发中必须掌握的重点,核心对比如下表:
表格
| 特性 | GET 方法 | POST 方法 |
|---|---|---|
| 数据长度限制 | 受 URL 长度限制(最大 2048 个字符) | 无长度限制 |
| 缓存特性 | 可被浏览器缓存,提升访问速度 | 不可被缓存 |
| 安全性 | 数据附在 URL 后,易泄露,安全性低 | 数据在请求体中,隐藏传输,安全性高 |
| 参数存储 | 参数保留在浏览器历史记录中 | 参数不保留在浏览器历史记录中 |
| 书签支持 | 可将请求 URL 收藏为书签 | 不可收藏为书签 |
| 刷新 / 后退 | 刷新无影响 | 刷新会提示重新提交数据 |
使用场景建议:GET 方法适用于查询、获取数据(如搜索、商品列表查询),无需传递敏感信息;POST 方法适用于提交数据(如登录、注册、表单提交、文件上传),尤其是包含密码、身份证等敏感信息的场景,必须使用 POST 方法。
4.3 HTTP 状态码
HTTP 状态码是服务器返回的 3 位数字代码,用于表示对客户端请求的处理状态,浏览器根据状态码判断请求是否成功、出现何种错误,并执行相应操作。状态码分为五大类,整体规则为:1XX 表示信息提示、2XX 表示请求成功、3XX 表示重定向、4XX 表示客户端错误、5XX 表示服务器错误。
生产环境中最常用的 HTTP 状态码及含义如下,是 Web 开发和运维排查问题的核心依据:
- 200 OK:请求成功,服务器正常返回请求的资源(如 HTML 页面、数据),是最常见的成功状态码;
- 301 Moved Permanently:永久重定向,表示请求的资源已永久移动到新的 URL,浏览器会自动跳转到新地址;
- 403 Forbidden:禁止访问,服务器理解请求,但拒绝执行,通常因权限不足导致(如未登录访问后台页面);
- 404 Not Found:服务器无法找到请求的页面 / 资源,常见原因是 URL 输入错误、资源被删除、路径配置错误;
- 500 Internal Server Error:服务器内部错误,是最常见的服务器端错误,原因包括程序代码错误、服务器配置异常、数据库连接失败等;
- 502 Bad Gateway:无效网关,服务器作为网关 / 代理,从上游服务器收到了无效的响应;
- 503 Service Unavailable:当前服务不可用,服务器暂时无法处理请求(如服务器过载、维护升级),通常为临时状态;
- 504 Gateway Timeout:网关请求超时,服务器作为网关 / 代理,未能及时从上游服务器获取响应。
4.4 HTTP 请求与响应的完整流程
HTTP 协议的核心是请求 / 响应模型 ,用户通过浏览器输入 URL 访问资源时,客户端与服务器之间会完成一次完整的请求 - 响应交互,整个流程分为发起 HTTP 请求 和返回 HTTP 响应两个阶段,涉及请求报文和响应报文的传输与解析,完整流程如下:
- 用户输入 URL:在浏览器地址栏输入域名 / URL,按下回车,触发 HTTP 请求;
- 客户端构建请求报文 :浏览器根据 URL 构建 HTTP 请求报文,包含请求行 、请求头 、空行 、请求体 四部分,其中:
- 请求行 :由请求方法、URL、协议版本组成(如
GET /index.html HTTP/1.1); - 请求头 :由 "名 / 值" 对组成,添加请求附加信息(如
User-Agent表示浏览器类型、Host表示请求的主机名、Connection表示连接方式); - 空行:请求头的结束标志,必不可少,分隔请求头和请求体;
- 请求体:存储提交的参数,GET 方法的参数在 URL 中,请求体为空;POST 方法的参数在请求体中,是核心数据传输区域。
- 请求行 :由请求方法、URL、协议版本组成(如
- 服务器接收并处理请求:服务器监听指定端口(如 80、443),接收到请求报文后,解析请求信息,执行相应的业务逻辑(如查询数据库、读取文件、执行程序);
- 服务器构建响应报文 :服务器处理完成后,构建 HTTP 响应报文,返回给客户端,响应报文包含状态行 、响应头 、空行 、响应体 四部分,其中:
- 状态行 :由协议版本、状态码、状态码描述组成(如
HTTP/1.1 200 OK); - 响应头 :由 "名 / 值" 对组成,添加响应附加信息(如
Server表示服务器软件、Content-Type表示响应内容类型、Content-Length表示响应内容长度); - 空行:响应头的结束标志,分隔响应头和响应体;
- 响应体:服务器返回的核心数据,通常为 HTML 代码、JSON 数据、图片等,是浏览器最终要渲染的内容。
- 状态行 :由协议版本、状态码、状态码描述组成(如
- 浏览器解析响应并渲染页面:浏览器接收到响应报文后,解析响应体中的 HTML 代码,加载相关资源(如 CSS、JavaScript、图片),最终在页面中渲染出可视内容,完成一次 HTTP 请求 - 响应交互。
五、Nginx 网站环境部署实战
Nginx 是一款轻量级的 HTTP 服务器 / 反向代理服务器,由俄罗斯的 Igor Sysoev 开发,以稳定性高、系统资源消耗低、高并发处理能力强 著称,单台物理服务器可支持 30000~50000 个并发请求,已成为 Apache 之后的主流 Web 服务器,被广泛应用于社交网络、电商、新闻资讯等高并发场景。本文将以 CentOS 系统为例,详细讲解 Nginx 的编译安装 、运行控制 、配置文件解析等核心操作。
5.1 Nginx 编译安装前的准备工作
Nginx 的安装方式包括 yum 安装和编译安装,yum 安装简单快捷,但功能固定;编译安装可自定义配置参数,添加所需模块,是生产环境的首选方式。编译安装前需完成环境准备,包括关闭防火墙、禁用 SELinux、安装依赖软件、创建运行用户。
5.1.1 关闭防火墙与 SELinux
为避免防火墙拦截 Nginx 的 80/443 端口,需临时关闭并禁用 firewalld 防火墙,同时将 SELinux 设置为宽容模式,命令如下:
# 临时关闭firewalld防火墙
systemctl stop firewalld
# 永久禁用firewalld防火墙
systemctl disable firewalld
# 将SELinux设置为宽容模式(临时生效)
setenforce 0
5.1.2 安装编译依赖软件
Nginx 编译需要依赖 pcre、zlib、gcc、openssl 等库文件,用于实现正则表达式、数据压缩、编译、HTTPS 支持等功能,通过 yum 一键安装依赖:
yum -y install pcre-devel zlib-devel gcc* openssl-devel
5.1.3 创建 Nginx 运行用户 / 组
为提高服务器安全性,避免 Nginx 以 root 用户运行,需创建专用的无登录权限用户 / 组,命令如下:
# -M 不创建家目录,-s /sbin/nologin 禁止登录系统
useradd -M -s /sbin/nologin nginx
5.2 Nginx 的编译与安装
完成准备工作后,开始下载 Nginx 源码包,进行编译配置和安装,本文以 Nginx 1.26.3 为例,讲解完整的编译安装步骤。
5.2.1 解压源码包
将下载的 Nginx 源码包(nginx-1.26.3_http_proxy.tar.gz)上传到服务器,通过 tar 命令解压:
tar zxvf nginx-1.26.3_http_proxy.tar.gz
# 进入解压后的目录
cd nginx-1.26.3
5.2.2 编译配置(./configure)
通过./configure命令进行编译配置,指定安装路径、运行用户、启用的模块,这是编译安装的核心步骤,完整的配置参数如下(包含 HTTPS、HTTP/2、状态统计、反向代理等核心功能):
./configure \
--prefix=/usr/local/nginx \ # 指定Nginx安装路径
--user=nginx \ # 指定运行用户
--group=nginx \ # 指定运行组
--with-http_ssl_module \ # 启用HTTPS支持
--with-http_v2_module \ # 启用HTTP/2协议
--with-http_realip_module \ # 启用IP透传功能
--with-http_stub_status_module \ # 启用状态统计模块
--with-http_gzip_static_module \ # 启用静态压缩功能
--with-pcre \ # 启用pcre正则支持
--with-stream \ # 启用TCP反向代理
--add-module=./ngx_http_proxy_connect_module # 启用HTTPS转发模块
配置参数说明:上述参数为生产环境常用配置,可根据实际需求删减,若配置过程中无报错,说明编译环境准备成功,生成了 Makefile 文件。
5.2.3 编译并安装
配置完成后,通过make命令编译源码,make install命令安装 Nginx,命令如下:
# 编译源码
make
# 安装Nginx到指定路径
make install
编译安装完成后,Nginx 的安装目录为/usr/local/nginx,包含 conf(配置文件)、sbin(执行程序)、html(默认网页)、logs(日志文件)等子目录。
5.2.4 建立软链接
为方便在任意目录执行 Nginx 命令,将 Nginx 执行程序建立软链接到系统全局命令目录/usr/local/sbin:
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
# 验证软链接是否创建成功
ls -l /usr/local/sbin/nginx
5.3 Nginx 的运行与控制
Nginx 安装完成后,需掌握核心的运行控制命令,包括配置文件检查、启动、停止、重载、添加系统服务,这是 Nginx 运维的基础。
5.3.1 检查配置文件语法
Nginx 的配置文件为/usr/local/nginx/conf/nginx.conf,修改配置后,需先检查语法是否正确,避免启动失败,命令如下:
nginx -t
若输出nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful,表示配置文件无语法错误。
5.3.2 启动、停止、重载 Nginx
-
启动 Nginx :直接执行
nginx命令,启动 Nginx 服务:nginx # 验证Nginx是否启动成功,查看80端口监听状态 netstat -anpt | grep nginx -
访问 Nginx 默认页面 :安装 elinks 浏览器,访问本地回环地址,验证页面是否正常显示:
yum -y install elinks elinks http://localhost -
重载 Nginx 配置 :修改配置文件后,无需停止服务,通过重载命令让配置生效,是生产环境的常用操作:
# 方式1:killall命令 killall -s HUP nginx # 方式2:nginx内置命令(推荐) nginx -s reload -
停止 Nginx 服务 :
# 优雅停止(处理完当前请求后停止,推荐) killall -s QUIT nginx # 强制停止 nginx -s stop
5.3.3 添加 Nginx 系统服务
为方便通过systemctl命令管理 Nginx(如开机自启、启动、停止、重启),需将 Nginx 添加为系统服务,步骤如下:
-
进入系统服务目录,创建
nginx.service文件:cd /lib/systemd/system vim nginx.service -
写入以下服务配置内容:
[Unit] Description=The NGINX HTTP and reverse proxy server After=network.target # 网络启动后再启动Nginx [Service] Type=forking # 后台运行模式 PIDFile=/usr/local/nginx/logs/nginx.pid # Nginx的PID文件路径 ExecStart=/usr/local/sbin/nginx # 启动命令 ExecStop=/usr/local/sbin/nginx -s stop # 停止命令 ExecReload=/usr/local/sbin/nginx -s reload # 重载命令 [Install] WantedBy=multi-user.target # 多用户模式下开机自启 -
重新加载系统服务配置,设置 Nginx 开机自启并启动:
# 重新加载系统服务 systemctl daemon-reload # 设置开机自启 systemctl enable nginx # 启动Nginx服务 systemctl start nginx # 验证Nginx服务状态 systemctl status nginx
添加系统服务后,即可通过systemctl start/stop/restart/reload nginx命令便捷管理 Nginx,符合 Linux 系统的服务管理规范。
5.4 Nginx 核心配置文件(nginx.conf)解析
Nginx 的主配置文件为/usr/local/nginx/conf/nginx.conf,采用模块化结构,核心分为全局配置 、I/O 事件配置 、HTTP 配置 三部分,配置项以分号;结尾,注释以#开头,下面详细讲解各部分的核心配置。
5.4.1 全局配置
全局配置位于配置文件最顶部,作用于 Nginx 的整个服务,核心配置项包括:
#user nobody; # Nginx运行用户,已指定为nginx,注释开启即可
worker_processes 1; # 工作进程数量,建议设置为与CPU核心数相同,提高并发处理能力
#error_log logs/error.log; # 错误日志文件路径,默认开启
#pid logs/nginx.pid; # PID文件路径,默认开启
关键配置 :worker_processes是影响 Nginx 并发性能的核心参数,生产环境中建议设置为 CPU 核心数(如 CPU 为 4 核,则设置为 4),充分利用服务器 CPU 资源。
5.4.2 I/O 事件配置
I/O 事件配置由events{}块包裹,用于配置 Nginx 的网络 I/O 模型和连接数限制,核心配置项包括:
events {
use epoll; # 使用epoll I/O模型,仅适用于Linux系统,大幅提高并发连接能力
worker_connections 4096; # 每个工作进程的最大连接数
}
关键配置:
use epoll:epoll 是 Linux 系统的高性能 I/O 模型,支持非活跃连接,相比 select/poll,能处理更多的并发连接,是生产环境的必配项;worker_connections:每个工作进程的最大连接数,结合worker_processes,Nginx 的最大并发连接数为worker_processes * worker_connections(需受服务器文件句柄限制)。
5.4.3 HTTP 配置
HTTP 配置由http{}块包裹,是 Nginx 配置的核心,包含 MIME 类型、日志格式、连接超时、虚拟主机、反向代理等所有与 HTTP 相关的配置,核心子配置包括:
http {
include mime.types; # 引入MIME类型配置文件,识别不同文件的类型
default_type application/octet-stream; # 默认文件类型为二进制流
# 定义日志格式,命名为main,包含客户端IP、请求时间、请求方法、状态码等信息
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main; # 开启访问日志,使用main格式,存储在logs/access.log
sendfile on; # 开启sendfile模式,提高文件传输效率,减少磁盘I/O
#tcp_nopush on; # 配合sendfile使用,提高网络传输效率
keepalive_timeout 65; # 长连接超时时间,65秒,客户端与服务器的连接保持时间
#gzip on; # 开启Gzip压缩,减小文件传输体积,提高访问速度,建议开启
# 虚拟主机配置,一个server{}块对应一个虚拟主机,可配置多个
server {
listen 80; # 监听80端口(HTTP默认端口)
server_name www.benet.com; # 虚拟主机的域名,可配置多个,用空格分隔
charset utf-8; # 网页编码为UTF-8,避免中文乱码
#access_log logs/host.access.log main; # 该虚拟主机的独立访问日志
# 路由配置,location{}块匹配请求路径
location / {
root html; # 网页根目录,位于/usr/local/nginx/html
index index.html index.htm; # 默认首页文件,按顺序匹配
}
# 错误页面配置,将500/502/503/504错误跳转到50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html { # 精确匹配50x.html路径
root html; # 错误页面的根目录
}
}
}
关键配置:
log_format:自定义访问日志格式,包含的变量可根据需求调整,是排查问题、统计访问量的重要依据;sendfile on:开启后 Nginx 直接通过内核传输文件,无需复制到用户空间,大幅提高静态文件传输效率;server{}:虚拟主机配置,可在一台 Nginx 服务器上配置多个server{}块,实现多个域名的解析,每个虚拟主机独立配置端口、域名、网页根目录;location{}:路由匹配,根据请求的 URL 路径匹配对应的配置,实现不同路径的不同处理逻辑(如静态资源、动态请求、反向代理)。
5.5 Nginx 访问状态统计配置
Nginx 提供了http_stub_status_module模块,可实现访问状态统计,查看 Nginx 的连接数、请求数等核心指标,是监控 Nginx 运行状态的重要功能,配置步骤如下:
-
编辑 Nginx 主配置文件,在
server{}块中添加/status路径的 location 配置:vim /usr/local/nginx/conf/nginx.conf添加以下内容:
server { listen 80; server_name localhost; charset utf-8; location / { root html; index index.html index.htm; } # 配置状态统计页面 location /status { stub_status on; # 开启状态统计 access_log off; # 关闭该路径的访问日志,减少日志量 } } -
重载 Nginx 配置,使配置生效:
systemctl reload nginx -
访问状态统计页面:在浏览器中输入
http://服务器IP/status,即可查看 Nginx 的运行状态,核心指标包括:Active connections:当前活跃连接数;server accepts handled requests:已接受的连接数、已处理的连接数、已处理的请求数;Reading:正在读取客户端请求的连接数;Writing:正在向客户端返回响应的连接数;Waiting:等待客户端请求的空闲连接数。
通过这些指标,可实时监控 Nginx 的并发连接情况和请求处理效率,及时发现服务器负载异常。
六、总结
本文从 Web 基础概念出发,系统讲解了域名与 DNS、Hosts 文件、网页与 HTML 的核心知识,明确了静态网页与动态网页的区别及主流开发语言,深入剖析了 HTTP 协议的版本、请求方法、状态码和完整的请求 - 响应流程,最后以 CentOS 系统为例,完成了 Nginx 的编译安装、运行控制、配置文件解析和状态统计配置。
Web 技术的核心是 "资源定位" 与 "协议通信",而 Nginx 作为高性能的 Web 服务器,是实现网页发布和高并发访问的核心载体。掌握本文的内容,可搭建起 Web 技术与服务器部署的基础体系,为后续的 Nginx 虚拟主机、反向代理、负载均衡、HTTPS 配置,以及 LNMP/LAMP 架构搭建打下坚实的基础。