news 2026/8/25 10:19:58

nginx - 核心概念

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
nginx - 核心概念

文章目录

    • 一、常用命令
    • 二、核心功能
      • 1. 正向代理和反向代理
        • 1.1 正向代理
        • 1.2 反向代理
      • 2. 负载均衡
      • 3. 动静分离
        • 3.1 动静分离的实现原理
        • 3.2 Nginx 配置实战
        • 3.3 为什么静态资源由 Nginx 直接返回回比较快

Nginx是一个高性能的 HTTP 和反向代理服务器,以其高并发处理能力低内存消耗模块化架构闻名。根据 W3Techs 数据,全球约34.2%的网站使用Nginx 作为 Web服务器或反向代理。

Nginx 安装

下载链接:http://nginx.org/en/download.html

我安装的是:1.16.1 版本的,如下:

然后解压到一个指定的文件夹就行;双击根目录的 nginx 图标,然后再访问 http://localhost/若出现以下页面表示启动成功:

也可以在任务管理器中查看是否启动成功:

一、常用命令

目的Linux / macOSWindows(exe 同级目录)
启动nginxstart nginx或双击nginx.exe
优雅停止nginx -s quitnginx -s quit
立即停止nginx -s stopnginx -s stop
重载配置热更新nginx -s reloadnginx -s reload
重新打开日志(切割日志用)nginx -s reopennginx -s reopen
测试配置是否正确nginx -tnginx -t
打印配置信息nginx -Tnginx -T
指定配置文件启动nginx -c /path/nginx.confnginx -c D:\conf\nginx.conf
指定前缀目录nginx -p /opt/nginx/nginx -p D:\nginx\
查看版本 & 编译参数nginx -Vnginx -V
查看帮助nginx -hnginx -h

一行搞定常见组合:

nginx-t&&nginx-sreload# 先检查再热重载

Windows 下若提示找不到nginx.pid,先start nginx确保进程已启动,再执行nginx -s reload/quit即可。

如图:

Nginx 日志存放位置:

访问日志:/nginx/log/nginx/access.log
错误日志:/nginx/log/nginx/error.log

二、核心功能

功能描述典型应用场景
正向代理代理客户端请求,隐藏真实客户端信息企业内网访问外网、爬虫代理
反向代理代理服务器端响应,隐藏真实服务器信息网站接入层、API 网关
负载均衡将流量分发到多个后端服务器高并发网站、微服务架构
动静分离静态资源与动态请求分开处理

1. 正向代理和反向代理

1.1 正向代理

正向代理是指客户端配置代理服务器,通过代理服务器访问目标服务器。客户端并不知道实际的目标服务器,只能通过代理服务器进行访问。

核心特点

  1. 客户端配置:需在客户端显式设置代理地址
  2. 隐私保护:服务器无法获取真实客户端 IP
  3. 访问控制:企业常用于限制员工上网行为

典型场景

  • 企业内网访问外网
  • 爬虫 IP 轮换
  • 科学上网工具

配置示例

server{listen3128;resolver8.8.8.8;location /{proxy_pass http://$http_host$request_uri;proxy_set_header X-Forwarded-For$remote_addr;}}
1.2 反向代理

反向代理是指客户端直接访问代理服务器,代理服务器再将请求转发给目标服务器。客户端并不知道实际的目标服务器,只能通过代理服务器进行访问。

核心特点

  1. 客户端无感知:用户直接访问代理地址
  2. 服务器保护:隐藏后端服务器拓扑
  3. 功能扩展:支持 SSL 卸载、缓存等

典型场景

  • 网站接入层

  • CDN 边缘节点

  • API 网关

    配置示例

upstream backend{server10.0.0.1:8080weight=3;server10.0.0.2:8080;}server{listen80;server_name example.com;location /{proxy_pass http://backend;proxy_set_header Host$host;}}

2. 负载均衡

见这篇文章: 负载均衡策略

3. 动静分离

动静分离是指将网站的静态资源(如HTML、CSS、JS、图片等)和动态内容(如 PHP、Java 生成的页面)分开处理的技术方案。通过Nginx实现动静分离,可以显著提高网站的性能和并发处理能力。

为什么要做动静分离?

1、性能优化:静态资源由 Nginx 直接返回,效率比应用服务器高 10 倍以上
2、减轻后端压力:减少应用服务器的请求量,节省 CPU 资源
3、提升用户体验:静态资源加载更快,页面响应更迅速
4、便于扩展:静态资源可以单独做 CDN 加速

3.1 动静分离的实现原理

3.2 Nginx 配置实战

1、基础配置示例

server{listen80;server_name example.com;# 静态资源目录location ~*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css|woff|ttf)${root /var/www/static;expires 30d;# 缓存30天access_log off;}# 动态请求转发location /{proxy_pass http://backend_server;proxy_set_header Host$host;}}

2、进阶优化配置

# 静态资源压缩gzipon;gzip_types text/plain text/css application/json application/javascript;# 静态资源缓存控制location ~*\.(jpg|png|gif)${expires 365d;add_header Cache-Control"public, no-transform";}# 禁止访问隐藏文件location ~ /\.{deny all;}

动静分离的目录结构建议

/var/www/ ├── static/ # 静态资源 │ ├── css/ │ ├── js/ │ ├── images/ │ └── fonts/ └── dynamic/ # 动态程序 ├── index.php └── api/
3.3 为什么静态资源由 Nginx 直接返回回比较快

架构层级更少,处理路径更短。

Nginx 直接返回:客户端 → Nginx → 硬盘文件 → 返回客户端(仅需 2 步跳转)

后端服务器处理:客户端 → Nginx → 后端程序 → 框架处理 → 读取文件 → 返回 Nginx → 返回客户端(至少 5 步跳转,链路更长)

📌 类比:就像去图书馆借书,Nginx是管理员直接拿书给你,后端服务器是让管理员先问馆长,馆长再找图书管理员,最后才把书给你。


🚀 感谢阅读!想了解更多?

📖 我的博客网站 | 记录思考,分享干货
🏡 我的个人主页 | 关于我、开源项目


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/25 10:18:37

03-技术选型背后的思考:为什么选择Next.js + FastAPI + LangChain

技术选型背后的思考:为什么选择Next.js FastAPI LangChain 前言 技术选型是项目成败的关键。本文将深入分析我们在构建AI Agent框架时的技术选型思路,以及每个技术栈的优劣对比。 适合读者: 技术Leader、架构师、全栈开发者 一、技术选型…

作者头像 李华
网站建设 2026/8/25 10:15:59

Workbuddy集成携程问道技能:从Node.js环境配置到API调用的全流程实践

1. 项目背景与“携程问道”技能的价值定位最近在折腾一个挺有意思的东西,叫“携程问道”。这名字听起来有点玄学,但本质上,它是一个集成在“Workbuddy”这个协作平台里的智能助手技能。简单来说,你可以把它理解为一个专门针对携程…

作者头像 李华
网站建设 2026/8/25 10:14:20

CentOS 8.5更换阿里源:解决官方源失效的完整指南

1. 为什么CentOS 8.5更换阿里源是运维的必修课如果你还在用CentOS 8.5,并且每次yum update都慢得像在爬,或者干脆提示“无法同步缓存”或“找不到仓库”,那你大概率是遇到了官方源停止维护的“断粮”问题。这不是网络问题,而是Cen…

作者头像 李华
网站建设 2026/8/25 10:11:20

Nginx 1.21.1 源码编译与生产部署全指南:从依赖安装到系统集成

1. 项目缘起:为什么我们还在手动部署Nginx?如果你在运维或者开发岗位上待过一段时间,肯定会发现一个有趣的现象:无论容器化、Serverless、云原生这些概念炒得多么火热,Nginx这个“老家伙”依然是生产环境中不可或缺的基…

作者头像 李华
网站建设 2026/8/25 10:11:17

深度神经网络梯度消失与爆炸:原理、诊断与工程解决方案

1. 从一次失败的神经网络训练说起几年前,我接手一个文本分类的项目,模型结构不复杂,就是一个几层的LSTM网络。数据准备好了,代码也写好了,满怀信心地跑起来,结果训练曲线让我傻了眼:损失值&…

作者头像 李华
网站建设 2026/8/25 10:10:46

从微信朋友圈测试用例设计,看测试工程师的系统思维与实战能力

1. 项目概述:从一道面试题看测试工程师的核心能力最近帮朋友公司面试测试工程师,发现一个挺有意思的现象:很多候选人简历上项目经验写得天花乱坠,但一碰到“写一个微信朋友圈的测试用例”这种看似基础的题目,要么思路混…

作者头像 李华