《Nginx 从入门到实践》系列一:Nginx 基础安装与目录结构

  • 发布时间:2025年6月8日

开博客这件事,我拖了很久。域名和服务器买回来小半年,一直放在角落吃灰,总觉得"等准备充分了再开始"。今年六月初的一个周末,我终于把博客从虚拟主机迁到了自己的云服务器上,也因此第一次认认真真地接触 Nginx。

说实话,之前我对 Nginx 的印象只停留在"很流行、性能好"这个层面。真正上手才发现,光是把安装、目录结构、配置逻辑这些基础搞清楚,就花了我不少时间,还踩了好几个坑。所以我决定把这个过程整理成一个系列,从零开始,把我在实践中理解的 Nginx 讲清楚。这是第一篇:安装与目录结构。

一、为什么选 Nginx

选择 Nginx 其实没什么纠结的。它是开源免费的,社区活跃,资料多,出问题基本都能搜到答案;配置是文本文件,改起来直观,配合 systemd 管理很方便;对一台小内存的轻量服务器来说,它的资源占用也很友好。我最早也试过 Apache,功能同样强大,但对我来说 Nginx 的配置写法更"顺手",所以最后定下来用它。这只是个人习惯,两个都是很棒的开源软件。

二、安装

我的服务器是 Debian 系的系统,所以直接用 apt 安装:

sudo apt update
sudo apt install nginx -y

安装完成后可以看一下版本号确认成功:

nginx -v

然后启动并设置开机自启:

sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx

这里有个我踩过的坑:装好之后浏览器访问服务器 IP 一直打不开,排查了半天,发现是防火墙没放行 80 端口。如果开了 ufw,记得执行:

sudo ufw allow 'Nginx Full'

"Full" 会同时放行 80 和 443 端口,后面配 HTTPS 就不用再改一次了。

三、目录结构

装好之后,我花了挺长时间才把各个目录的作用弄清楚。对 Debian/Ubuntu 系的安装方式来说,重点看这几个地方:

/etc/nginx/ 是主配置目录。核心文件是 nginx.conf,它是所有配置的入口,通过 include 指令把其他文件加载进来。conf.d/ 里可以放一些自定义的全局配置片段。sites-available/ 和 sites-enabled/ 是 Debian 系的特色:前者放"可用的站点配置",后者放"已启用的站点配置",启用方式是在 sites-enabled 里创建软链接。这样做的好处是停用一个站点时不用删文件,删链接就行。

/usr/share/nginx/html/ 是默认的网页根目录,刚装好时访问服务器 IP 看到的欢迎页就来自这里。

/var/log/nginx/ 存放日志,access.log 记录访问,error.log 记录错误。排查问题时这两个文件是最重要的线索,我后面会专门写排查相关的内容,这里先记住位置。

/var/cache/nginx/ 是缓存目录,做代理缓存时会用到。

四、读懂 nginx.conf

第一次打开 nginx.conf 时我有点懵,觉得内容很多。后来发现它的结构其实很清晰,是一个从外到里的层级:main(全局)→ events → http → server → location。main 和 events 在最外层,一般保持默认;我们日常写的最多的是 http 块里的 server 和 location,一个 server 代表一个站点,location 负责匹配 URL 路径。

几个我常用的配置项:

worker_processes auto;      # 工作进程数跟随 CPU 核心数
worker_connections 1024;    # 单个进程的最大连接数
keepalive_timeout 65;       # 长连接超时
gzip on;                    # 开启压缩,对文本类资源效果明显

五、我的配置习惯

用了一段时间后,我总结了自己的几条习惯,推荐给同样在折腾的朋友:

  1. 每个站点一个独立配置文件,放在 /etc/nginx/sites-available/ 下,命名用"域名.conf",比如 keyt.srwz.net.conf,然后在 sites-enabled 里做软链接。
  2. 改配置之前先备份原文件,改完必须执行 sudo nginx -t 检查语法,通过之后再 sudo systemctl reload nginx 平滑重载,不要用 restart 硬重启,避免瞬间断连。
  3. 日志是好朋友,遇到问题先看 /var/log/nginx/error.log。

写在最后

到这里,Nginx 的安装和目录结构就讲完了。这些看起来琐碎,但后面所有配置都建立在这些基础之上。下一篇我会写 location 匹配规则——伪静态、动静分离、反向代理全都离不开它,也是配置里最容易出 bug 的地方,值得单独花一篇来讲清楚。