文章目录
- 一、常用命令
- 二、核心功能
- 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 / macOS | Windows(exe 同级目录) |
|---|---|---|
| 启动 | nginx | start nginx或双击nginx.exe |
| 优雅停止 | nginx -s quit | nginx -s quit |
| 立即停止 | nginx -s stop | nginx -s stop |
| 重载配置(热更新) | nginx -s reload | nginx -s reload |
| 重新打开日志(切割日志用) | nginx -s reopen | nginx -s reopen |
| 测试配置是否正确 | nginx -t | nginx -t |
| 打印配置信息 | nginx -T | nginx -T |
| 指定配置文件启动 | nginx -c /path/nginx.conf | nginx -c D:\conf\nginx.conf |
| 指定前缀目录 | nginx -p /opt/nginx/ | nginx -p D:\nginx\ |
| 查看版本 & 编译参数 | nginx -V | nginx -V |
| 查看帮助 | nginx -h | nginx -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 正向代理
正向代理是指客户端配置代理服务器,通过代理服务器访问目标服务器。客户端并不知道实际的目标服务器,只能通过代理服务器进行访问。
核心特点
- 客户端配置:需在客户端显式设置代理地址
- 隐私保护:服务器无法获取真实客户端 IP
- 访问控制:企业常用于限制员工上网行为
典型场景
- 企业内网访问外网
- 爬虫 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 反向代理
反向代理是指客户端直接访问代理服务器,代理服务器再将请求转发给目标服务器。客户端并不知道实际的目标服务器,只能通过代理服务器进行访问。
核心特点
- 客户端无感知:用户直接访问代理地址
- 服务器保护:隐藏后端服务器拓扑
- 功能扩展:支持 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是管理员直接拿书给你,后端服务器是让管理员先问馆长,馆长再找图书管理员,最后才把书给你。
🚀 感谢阅读!想了解更多?
📖 我的博客网站 | 记录思考,分享干货
🏡 我的个人主页 | 关于我、开源项目