从零开始掌握 Web 与 Nginx:入门详解

前言

[1. Web 基础概念](#1. Web 基础概念)

[1.1 Web 是什么](#1.1 Web 是什么)

[1.2 B/S 架构模型](#1.2 B/S 架构模型)

[1.3 Web 请求与响应流程](#1.3 Web 请求与响应流程)

[1.4 静态 vs 动态资源](#1.4 静态 vs 动态资源)

[1.5 Web 发展阶段](#1.5 Web 发展阶段)

[1.6 动手实验:最小 Web 服务](#1.6 动手实验:最小 Web 服务)

[2. HTTP 与 HTTPS 协议](#2. HTTP 与 HTTPS 协议)

[2.1 HTTP vs HTTPS](#2.1 HTTP vs HTTPS)

[2.2 HTTPS 握手流程](#2.2 HTTPS 握手流程)

[2.3 HTTP 状态码速查](#2.3 HTTP 状态码速查)

[3. Nginx 概述](#3. Nginx 概述)

[3.1 Nginx 介绍](#3.1 Nginx 介绍)

[3.2 Nginx vs Apache](#3.2 Nginx vs Apache)

[3.3 Nginx 进程结构](#3.3 Nginx 进程结构)

[4. 安装 Nginx](#4. 安装 Nginx)

[5. Nginx 配置核心知识](#5. Nginx 配置核心知识)

[5.1 全局配置](#5.1 全局配置)

[5.2 I/O 事件配置](#5.2 I/O 事件配置)

[5.3 HTTP 配置](#5.3 HTTP 配置)

[5.4 基础 server 配置](#5.4 基础 server 配置)

[6. Nginx 虚拟主机与常用功能](#6. Nginx 虚拟主机与常用功能)

[6.1 访问状态统计](#6.1 访问状态统计)

[6.2 基于授权的访问控制](#6.2 基于授权的访问控制)

[6.3 基于客户端 IP 控制](#6.3 基于客户端 IP 控制)

[6.4 基于域名的虚拟主机](#6.4 基于域名的虚拟主机)

[6.5 基于 IP/端口的虚拟主机](#6.5 基于 IP/端口的虚拟主机)

[7. 总结与展望](#7. 总结与展望)

前言

在网站搭建、运维或开发工作中,Web 基础知识Nginx 配置几乎是必修课。很多人一提起 Web 只知道"浏览器能打开页面",一提起 Nginx 只知道"高性能"。本篇文章就带你从零开始,弄懂 Web 的基本原理、HTTP/HTTPS 协议,再到 Nginx 的概念、安装和配置,最后掌握常见的虚拟主机场景。


1. Web 基础概念

1.1 Web 是什么

Web(World Wide Web,万维网)是运行在互联网之上的超文本信息系统,通过 HTTP/HTTPS 协议实现浏览器与服务器之间的交互。

三大特性:

  • 分布式:资源分布在全球各地的服务器上

  • 跨平台:只要有浏览器就能访问

  • 无状态:每次请求独立(可借助 Cookie/Session 保持状态)

1.2 B/S 架构模型

Web 采用 **B/S(Browser/Server)**架构:

  • Browser(浏览器):用户入口,发送请求、渲染页面

  • Server(服务器):接收请求并返回资源或动态内容

1.3 Web 请求与响应流程

  1. 用户输入 URL

  2. DNS 解析域名为 IP 地址

  3. 建立 TCP 连接(3 次握手)

  4. 浏览器发起 HTTP 请求

  5. 服务器处理静态或动态资源

  6. 服务器返回 HTTP 响应报文

  7. 浏览器解析 HTML/CSS/JS 渲染页面

1.4 静态 vs 动态资源

  • 静态资源:HTML、CSS、JS、图片、视频(直接返回,速度快)

  • 动态资源:需服务器端程序生成(PHP/Python/Java),支持个性化和交互

1.5 Web 发展阶段

  • Web 1.0:静态页面为主

  • Web 2.0:交互式、AJAX 普及

  • Web 3.0:语义网、去中心化、区块链等概念

1.6 动手实验:最小 Web 服务

  1. 安装 Nginx

  2. 在服务器根目录创建 index.html 静态页面

  3. 在浏览器访问服务器地址,体验完整请求与响应


2. HTTP 与 HTTPS 协议

2.1 HTTP vs HTTPS

  • HTTP:明文传输,不安全

  • HTTPS:HTTP + SSL/TLS 加密,防止中间人攻击

2.2 HTTPS 握手流程

客户端与服务器交换证书、协商加密算法、生成临时密钥,然后通过加密通道传输后续数据。

2.3 HTTP 状态码速查

类别 范围 含义(大白话)
1xx 100--199 请求处理中,"稍等"
2xx 200--299 请求成功,"东西拿到了"
3xx 300--399 重定向,"资源搬家了"
4xx 400--499 客户端错误,"你请求有问题"
5xx 500--599 服务器错误,"服务器崩了"

3. Nginx 概述

3.1 Nginx 介绍

Nginx(读作"Engine X")是一款高性能的 HTTP 和反向代理服务器,特点:

  • 占用内存少、支持高并发(单机可达数万连接)

  • 支持静态资源服务、反向代理、负载均衡

  • 稳定可靠、开源免费

3.2 Nginx vs Apache

对比项 Nginx Apache
架构 事件驱动 基于进程
内存消耗 更低 相对较高
热部署 支持 不支持
静态文件处理 高效 一般
反向代理 优势明显 一般

3.3 Nginx 进程结构

Nginx 采用事件驱动的多 Worker 进程模型,同时处理大量并发请求而不会占用太多资源。


4. 安装 Nginx

推荐使用官方包或脚本安装,安装完成后用 nginx -v 查看版本。


5. Nginx 配置核心知识

5.1 全局配置

复制代码
worker_processes 4;    # 工作进程数量(核心数*2)
error_log logs/error.log;
pid logs/nginx.pid;

5.2 I/O 事件配置

复制代码
events {
    use epoll;                  # Linux 推荐 epoll 提高性能
    worker_connections 4096;    # 每进程最大连接数
}

5.3 HTTP 配置

http {} 中设置日志、端口、字符集、虚拟主机等:

复制代码
http {
    include mime.types;
    default_type application/octet-stream;
    sendfile on;
    keepalive_timeout 65;
}

5.4 基础 server 配置

复制代码
server {
    listen 80;
    server_name www.kgc.com;
    charset utf-8;
    location / {
        root html;
        index index.html index.php;
    }
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root html;
    }
}

6. Nginx 虚拟主机与常用功能

6.1 访问状态统计

复制代码
location /status {
    stub_status on;
    access_log off;
}

浏览器访问 http://服务器IP/status 查看当前连接状态。

6.2 基于授权的访问控制

复制代码
yum install -y httpd-tools
htpasswd -c /usr/local/nginx/passwd.db zhangsan

nginx.conf 添加:

复制代码
auth_basic "secret";
auth_basic_user_file /usr/local/nginx/passwd.db;

6.3 基于客户端 IP 控制

复制代码
allow 192.168.114.129;
deny all;

6.4 基于域名的虚拟主机

/etc/hosts 中添加:

复制代码
192.168.10.21 www.xxsyyz.com www.xxsyyz2.com

再在 nginx.conf 中配置不同 server_name 和根目录,实现多站点。

6.5 基于 IP/端口的虚拟主机

Nginx 支持按 IP、按端口监听多个站点:

复制代码
server {
    listen 192.168.10.21:8080;
    server_name www.xxsyyz.com;
    root /var/www/html/cs1;
}
server {
    listen 192.168.10.21:8888;
    server_name www.xxsyyz2.com;
    root /var/www/html/cs2;
}

7. 总结与展望

本文从 Web 基础讲起,到 HTTP/HTTPS 协议、状态码,再到 Nginx 的概念、安装与配置、虚拟主机等场景,基本覆盖了初学者需要掌握的核心知识点。 掌握了这些,你就可以自己搭建一个完整的 Web 服务、配置多站点,甚至进行性能监控和访问控制。

相关推荐
脑子慢且灵2 小时前
【JavaWeb】一个简单的Web浏览服务程序
java·前端·后端·servlet·tomcat·web·javaee
柯南二号3 小时前
【大前端】 断点续传 + 分片上传(大文件上传优化) 的前端示例
前端
前端小超超3 小时前
如何配置capacitor 打包的安卓app固定竖屏展示?
android·前端·gitee
xiaopengbc3 小时前
在Webpack中,如何在不同环境中使用不同的API地址?
前端·webpack·node.js
前端AK君3 小时前
React中台系统如何嵌入到业务系统中
前端
Slice_cy3 小时前
不定高虚拟列表
前端
前端AK君3 小时前
React组件库如何在vue项目中使用
前端
Moonbit3 小时前
MoonBit 再次走进清华:张宏波受邀参加「思源计划」与「程序设计训练课」
前端·后端·编程语言
RestCloud3 小时前
一站式数据集成:iPaaS 如何让开发者和业务人员都满意?
前端·后端·架构