Nginx 配置从零到一:小白也能看懂的超详细部署指南

Nginx 配置从零到一:小白也能看懂的超详细部署指南
(2025–2026 最新实用版)

这是一篇真正面向零基础 / 刚接触 Nginx 的人写的完整指南。
目标:你按照步骤操作完,能独立把 Nginx 装好、配置好、跑起来,并且知道每一行配置在干什么。

第一步:先搞清楚 Nginx 到底是干什么的(5 分钟必看)

最通俗的比喻:

Nginx = 高性能的“门卫 + 快递中转站 + 保安队长”

它通常同时扮演以下几种角色:

实际用途通俗解释配置文件中对应模块今天最常见的场景
静态资源服务器把 html/css/js/图片 直接发给用户http {} → location /前端打包后的 dist 目录
反向代理用户找我,我再去问真正的后端要东西proxy_pass把请求转发给 SpringBoot / Node / PHP
负载均衡来了 1000 个请求,我平均分给 5 台服务器upstream + proxy_pass多台后端服务器
HTTPS / SSL 终结把 https 解密后用 http 转给后端listen 443 ssl所有线上站点必须
缓存相同的请求我先看有没有缓存,有就直接返回proxy_cache静态资源 + 接口缓存
限流 / 防刷1 秒只许你请求 10 次,多了就 503limit_req防止接口被恶意刷爆

第二步:安装 Nginx(不同系统选一种)

方式一:最推荐(生产 & 学习都用)——用官方源安装(Ubuntu / Debian)
# 1. 添加官方源(非常重要,获得最新稳定版)sudoapt update &&sudoaptinstall -y curl gnupg2 ca-certificates lsb-release debian-archive-keyring curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \|sudotee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null echo"deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \ http://nginx.org/packages/ubuntu `lsb_release -cs` nginx"\|sudotee /etc/apt/sources.list.d/nginx.list echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n"\|sudotee /etc/apt/preferences.d/99nginx # 2. 安装sudoapt update sudoaptinstall nginx 
方式二:CentOS / Rocky / AlmaLinux
sudo yum install -y yum-utils sudotee /etc/yum.repos.d/nginx.repo <<EOF [nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/\$releasever/\$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true EOFsudo yum makecache sudo yum install nginx 
方式三:Docker(最快上手测试)
docker run -d --name nginx-test \ -p 80:80 -p 443:443 \ -v $(pwd)/nginx.conf:/etc/nginx/nginx.conf:ro \ -v $(pwd)/html:/usr/share/nginx/html:ro \ nginx:stable 

第三步:Nginx 配置文件层级关系(背下来这张表)

nginx.conf # 主配置文件(全局) ├── events { ... } # 事件模型(基本不动) ├── http { # http 层(最重要) │ ├── upstream xxx { } # 定义后端服务器组(负载均衡用) │ ├── server { # 每一个 server 块 ≈ 一个站点 / 虚拟主机 │ │ ├── listen 80; │ │ ├── server_name example.com www.example.com; │ │ ├── location / { # 最核心,最常改的就是这里 │ │ │ ... │ │ } │ │ ├── location ~* \.(jpg|png|gif)$ { ... } # 正则匹配 │ │ └── ... │ } │ └── ... } 

第四步:最常用、最经典的几种配置模板(直接复制改)

模板 1:最简单静态网站(前端打包后直接用)
server { listen 80; server_name your-domain.com www.your-domain.com; root /var/www/html/dist; # ← 改成你打包后的目录 index index.html index.htm; location / { try_files $uri $uri/ /index.html; # SPA必备(Vue/React/Angular) } # 图片、css、js 等静态资源加缓存 location ~* \.(jpg|jpeg|png|gif|ico|css|js|svg|woff|woff2|ttf|eot)$ { expires 30d; access_log off; } # 禁止访问 .git .env 等敏感文件 location ~ /\. { deny all; } } 
模板 2:最常见的反向代理(转发给后端服务)
upstream backend { server 127.0.0.1:8080; # Spring Boot / Node / Python 等 # server backend2.example.com:8080 weight=2; # 权重负载 # keepalive 32; # 连接复用(推荐) } server { listen 80; server_name api.your-domain.com; location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # 超时设置(重要) proxy_connect_timeout 5s; proxy_read_timeout 60s; proxy_send_timeout 60s; } } 
模板 3:开启 HTTPS(Let’s Encrypt 免费证书)

先安装 certbot:

sudoaptinstall certbot python3-certbot-nginx sudo certbot --nginx -d your-domain.com -d www.your-domain.com 

证书自动配置后,server 块会变成:

server { listen 443 ssl; # ← 必须加 ssl server_name your-domain.com; ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem; # 推荐的安全配置(2025 标准) ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH; ... } 

同时自动创建 80 → 443 重定向。

第五步:常用运维命令(背下来)

# 重载配置(不中断服务,最常用)sudo nginx -s reload # 测试配置语法是否正确(超重要!)sudo nginx -t # 完整重启(会断开连接)sudo systemctl restart nginx # 查看当前所有配置(展开 include) nginx -T # 查看正在处理的连接 nginx -V # 查看编译参数 ss -lntp |grep nginx 

第六步:新手最容易踩的 15 个坑(避坑指南)

  1. 忘了写 sudo nginx -t 就重启 → 语法错导致服务起不来
  2. location / 后面加了 / → 路径匹配出问题
  3. upstream 写错 IP:端口 → 502 Bad Gateway
  4. 忘了加 proxy_set_header Host $host; → 后端拿不到域名
  5. SPA 项目没写 try_files $uri /index.html; → 刷新 404
  6. HTTPS 配置后仍走 http → 忘了写 80 的 return 301 https
  7. 证书过期没续期 → certbot renew --dry-run 测试
  8. 日志没开 access_log → 排查问题很痛苦
  9. 防火墙没开 80/443 → ufw allow 80,443
  10. upstream 里服务器挂了没剔除 → 加 health_check 或 max_fails
  11. 静态文件 404 → 检查 root 路径是否正确(pwd 确认)
  12. proxy_pass 最后加了 / → 路径被截断
  13. 大文件上传失败 → client_max_body_size 100m;
  14. 并发高 CPU 打满 → worker_processes auto; + worker_connections 65535;
  15. SELinux 导致权限问题 → setenforce 0(临时)或正确配置上下文

总结:新手进阶学习路径(建议顺序)

  1. 把上面三个模板都跑通(静态 + 代理 + https)
  2. 学会看 access.log / error.log
  3. 学会用 nginx -T 查看完整配置
  4. 掌握 location 匹配优先级(= > ^~ > ~* > ~ > 普通)
  5. 学会配置 gzip / brotli 压缩
  6. 学会配置缓存 proxy_cache
  7. 进阶:OpenResty + Lua 脚本、Nginx + Kubernetes Ingress

如果你按照步骤把 Nginx 装好 + 配置好三个模板,恭喜你——Nginx 已经从零入门到能上线用了

有哪部分还想再细化(例如完整的 HTTPS + HSTS + OCSP Stapling、限流配置、WebSocket 代理、日志切割、监控等)?
告诉我,我继续给你最实用的配置和解释。

Read more

黑马点评完整代码(RabbitMQ优化)+简历编写+面试重点 ⭐

黑马点评完整代码(RabbitMQ优化)+简历编写+面试重点 ⭐

简历上展示黑马点评 完整代码地址 微服务学成在线项目 前言 当初就是当作一个学习笔记和个人面试记录发的,没想到这么多人收藏浏览,还是感慨学Java的人确实多啊。 适合什么人看呢,我仅仅说说我个人的理解,因为我现在也是个经历秋招的双非学生。 1.初学者学习完Redis基础,想来个实战,黑马点评还是特别好的一个项目,基本包含了所有数据类型的运用和redis其他功能的扩展,这篇文章可以带你提炼重点,很好的走下流程。 2.但大部分人是冲着找实习和秋招去的,像我这种学历不高的秋招就不要写黑马点评了,即使包装,也会很容易看出来,我找实习的时候就被面试官问到这是不是黑马点评过,我们可以把其中的闪光点迁移到你找的其他项目中,比如缓存穿透雪崩击穿的解决方法,redisson分布式锁解决一人一单,这种在大多项目中都可以添加,自圆其说就行。 3.对于找实习的像大二,大三上的,想找个小厂试试手垂直向上升的,可以吃透它,面试官问你遇到的困难或者是你觉得难点,就可以重点讲一人一单这个解决方法和流程,越详细越好。 4.前提是大家不用直接用这套模板,太多人用了,这也是我从网上找的别人的,巧用AI让它改改项

By Ne0inhk
最新Spring Security实战教程(十一)CSRF攻防实战 - 从原理到防护的最佳实践

最新Spring Security实战教程(十一)CSRF攻防实战 - 从原理到防护的最佳实践

🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Micro麦可乐的博客 🐥《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程,入门到实战 🌺《RabbitMQ》专栏19年编写主要介绍使用JAVA开发RabbitMQ的系列教程,从基础知识到项目实战 🌸《设计模式》专栏以实际的生活场景为案例进行讲解,让大家对设计模式有一个更清晰的理解 🌛《开源项目》本专栏主要介绍目前热门的开源项目,带大家快速了解并轻松上手使用 ✨《开发技巧》本专栏包含了各种系统的设计原理以及注意事项,并分享一些日常开发的功能小技巧 💕《Jenkins实战》专栏主要介绍Jenkins+Docker的实战教程,让你快速掌握项目CI/CD,是2024年最新的实战教程 🌞《Spring Boot》专栏主要介绍我们日常工作项目中经常应用到的功能以及技巧,代码样例完整 🌞《Spring Security》专栏中我们将逐步深入Spring Security的各个技术细节,带你从入门到精通,全面掌握这一安全技术 如果文章能够给大家带来一定的帮助!欢迎关注、评

By Ne0inhk
windows 如何更新npm及node.js到最新版本

windows 如何更新npm及node.js到最新版本

在 Windows 系统上更新 npm(Node Package Manager)可以通过以下步骤完成: 方法 1:直接更新 npm 1. 以管理员身份打开命令行工具(CMD 或 PowerShell): * 右键点击「开始菜单」→ 选择 Windows Terminal (Admin) 或 命令提示符(管理员)。 * -g 表示全局安装。 * 如果遇到权限问题,可以尝试使用系统代理或关闭杀毒软件。 验证更新是否成功: npm-v 更新 npm 到最新版本: npminstall-g npm@latest 方法 2:更新 Node.js 以附带更新 npm 如果 npm 版本过旧,可能需要直接升级 Node.

By Ne0inhk
【MySQL筑基篇】新手必看:聚簇索引、非聚簇索引与回表,一篇扫清盲区

【MySQL筑基篇】新手必看:聚簇索引、非聚簇索引与回表,一篇扫清盲区

🍃 予枫:个人主页 📚 个人专栏: 《Java 从入门到起飞》《读研码农的干货日常》 💻 Debug 这个世界,Return 更好的自己! 引言 做后端开发的同学,大概率都听过“索引优化”,也用过主键索引提升查询速度。但你真的懂索引吗?日常开发中,不少同学遇到查询卡顿就盲目加索引,结果反而导致数据增删改效率下降;还有人疑惑,为什么同样是索引,主键查询秒出结果,普通索引查询却要慢半拍?除了主键,还有哪些核心索引类型?为什么有的查询不用“绕路”,有的却要额外“回表”?今天咱们从数据库物理存储的底层逻辑出发,逐字拆解聚簇索引与非聚簇索引的核心概念,帮你夯实索引入门基础,为后续吃透B+树结构、搞定索引优化铺路~ 建议点赞收藏,避免后续需要时找不到! 文章目录 * 引言 * 一、索引基础:不止是“快速查找” * 1.1 为什么需要关注物理存储? * 二、聚簇索引:数据与索引“合二为一”

By Ne0inhk