SEO 百科
Nginx
本页目录
Nginx
Nginx 是一款网络服务器软件,官方把它定义为 HTTP 网络服务器,同时充当反向代理、内容缓存与负载均衡器[1]。站长需要认识它,因为伪静态、内容压缩、缓存、HTTP/2 与 HTTP/3 这几个开关都开在它这一层,每一项都直接落在抓取上。官方称它是全球最受欢迎的网络服务器[1],第三方统计给出的数字是 30.7% 的网站使用 Nginx[14]。选它、自己装它,还是用主机商配好的版本,会直接影响页面响应速度与抓取结果。
在服务器软件栈中的位置
Nginx 排在最上层,负责接住浏览器与爬虫发来的请求。静态文件由它直接返回,动态请求转给运行时处理[1]。它自己不生成页面,页面内容由 PHP-FPM、JVM 或 Node.js 这些程序产生,数据库再为这些程序提供数据。
官方列出的加速对象包括 FastCGI、uwsgi、SCGI 和 memcached[1]。同一台机器上,Nginx 就站在这几种运行时的前面。
| 层 | 常见软件 | 职责 |
|---|---|---|
| 系统 | Linux | 分配处理器、内存与网络 |
| 网络服务器 | Nginx | 接收请求、返回静态文件、转发动态请求 |
| 运行时 | PHP-FPM、JVM、Node.js | 生成页面内容 |
| 数据层 | MySQL、Redis | 存取页面要用的数据 |
架构上,Nginx 由一个主进程和多个工作进程组成,工作进程以非特权用户身份运行[1]。官方给出的数字是,10000 个空闲的 keep-alive 连接约占 2.5M 内存[1]。并发能力就体现在这里:同一台机器,进程模型决定它能同时接住多少请求。
与抓取和收录相关的配置
这一层能改的开关不多,每一个都落在抓取上。百度把收录概括为“从互联网抓取网页、建立索引数据库、将索引库中数据展现给用户”[11],网络服务器管的就是第一步能不能顺利完成。
伪静态用 rewrite 指令完成,官方模块名叫 ngx_http_rewrite_module,它用正则表达式改写 URI[6]。作用是让带参数的动态地址以静态形式出现,方便收录。
压缩方面,官方模块里带的是 gzip,模块名叫 ngx_http_gzip_module[5]。Brotli 不在开源版自带模块里,要另装社区模块 ngx_brotli[3]。Google 抓取工具支持 gzip、deflate 与 Brotli 三种编码[9],装了 Brotli 的站点能再少传一部分字节。
缓存方面,官方把带缓存的反向代理列为基础功能[1]。静态资源用 expires 指令设过期时间,命中缓存后重复访问不再回源;动态页面用 proxy_cache 把上游响应存起来。
协议方面,官方把 HTTP/2 支持列为基本特性[1]。HTTP/3 从 1.25.0 版本开始支持,构建时要加上 --with-http_v3_module 参数,listen 指令上要加 quic[4]。
响应时间才是抓取的直接变量。Google 说明,抓取容量上限随站点响应状况升降,响应快时上限升高,变慢或出现服务器错误时上限下降[10]。百度也说明,Baiduspider 会根据服务器压力自动调整抓取频次[12]。
server {
listen 443 ssl;
listen 443 quic reuseport; # HTTP/3,与 HTTP/2 共用端口
http2 on;
gzip on;
gzip_types text/html text/css application/javascript;
location / {
# 伪静态:把 /article/123.html 交给 article.php 处理
rewrite ^/article/([0-9]+)\.html$ /article.php?id=$1 last;
}
location ~* \.(css|js|png|webp)$ {
expires 7d; # 静态资源缓存 7 天
}
}
选购与自建的取舍
买主机的站长多数不用碰这一层,面板里改几项就能用。自己装的好处是版本与模块由自己决定,比如要不要加 Brotli 或 HTTP/3 模块。
代价是这些活都落到自己头上。发行版自带的版本可能偏旧,安全补丁要自己跟;配置改动要先测试,好在 Nginx 支持不中断服务地重载配置[1]。
授权成本可以忽略。Nginx 以 2 条款 BSD 许可证分发,可免费使用[1];企业发行版与商业支持由 F5 提供[1]。
装控制面板之前,先确认它支持正在用的 Nginx 版本。面板自动生成的配置会和手工改过的配置互相覆盖,出问题时两边都难查。
与其他网络服务器的区别
几种服务器在配置写法上的差别,决定了迁移时要不要改写规则。
| 服务器 | 配置写法 | 逐目录规则文件 |
|---|---|---|
| Nginx | 主配置里的 server 与 location 块 |
没有 |
| Apache | 主配置与 .htaccess |
.htaccess |
| LiteSpeed | Apache 风格的配置 | .htaccess |
| IIS | web.config |
web.config |
Apache 用 .htaccess 做逐目录配置,规则放进站点目录,只对该目录及其子目录生效[2]。LiteSpeed 企业版会自动读取旧的 Apache 配置,.htaccess 也在其中[7]。IIS 只能跑在 Windows 上,HTTP 请求由内核驱动 HTTP.sys 接收[8]。
Nginx 没有逐目录规则文件,规则按 server 与 location 分成块写在主配置里。把 WordPress 从 Apache 搬到 Nginx,原来的 .htaccess 不能直接拷过去,里面的规则要改写成 location 块。
常见误用
一种误用是给伪静态规则做外部跳转,把它写成 301。跳转链一长就会被判成重定向错误,百度明确说连续跳转超过 5 次会抓取失败[13]。
另一种误用是缓存开了却没排除后台与登录页,编辑改完内容在页面上看不到变化,抓取到的还是旧版本。
还有一种误用是只开了 gzip,不装 Brotli 模块,白丢一截传输体积。这不影响收录,但会让移动端的加载时间变长。
最后一种误用是服务器上的防护或限流把 Baiduspider 一起挡住。百度提醒,防护系统通常按请求量自动阻止超量请求,而爬虫发出的请求比普通用户多,容易被拦[13]。
附录
参见
参考资料
官方(境外)
- 《nginx》,NGINX。
- 《Apache HTTP Server Tutorial: .htaccess files》,Apache HTTP Server Project。
- 《Brotli》,NGINX。
- 《Support for QUIC and HTTP/3》,NGINX。
- 《Module ngx_http_gzip_module》,NGINX。
- 《Module ngx_http_rewrite_module》,NGINX。
- 《Licenses》,LiteSpeed Technologies,2026-07-27。
- 《Introduction to IIS Architectures》,Microsoft Learn。
- 《Google 抓取工具和抓取器(用户代理)概览》,Google 搜索中心,2025-09-11 更新。
- 《面向大型网站所有者的抓取预算管理指南》,Google 搜索中心。
官方(国内)
- 《百度搜索的工作原理》,百度搜索资源平台,2023-12-21 更新。
- 《平台工具使用手册(抓取频次)》,百度搜索资源平台,2020-08-14 更新。
- 《平台工具使用手册(抓取诊断)》,百度搜索资源平台,2020-08-14 更新。
第三方
- 《Usage statistics of web servers》,W3Techs,2026-10-07。
外部链接
无。