Nginx动静分离详解(原理+配置+实战)

deer332025-09-23技术文章20

Nginx动静分离是一种常见的 Web 服务优化技术,Nginx动静分离可以更好的提升性能@mikechen

文章来源:mikechen.cc


Nginx动静分离

动静分离,顾名思义,就是将 Web 应用中的动态资源、和静态资源分开处理。

如下图所示:

静态资源

指内容不经常变化的文件,如 HTML、CSS、JavaScript 文件、图片、视频、字体文件等。

这些文件可以直接由 Web 服务器(如 Nginx)直接发送给客户端,无需经过应用服务器处理。

将大量的静态资源请求从应用服务器中剥离出来,可以显著降低应用服务器的负载,使其能够专注于处理动态业务逻辑。


动态资源

指内容经常变化,需要根据用户请求或后端逻辑实时生成的文件,如 JSP、PHP、ASP、Python 脚本等。

这些请求需要转发到应用服务器(如 Tomcat、PHP-FPM、UWSGI 等)进行处理,生成最终的响应数据。


Nginx动静分离原理

Nginx 实现动静分离的核心原理:是利用其强大的 location 匹配规则。

通过配置不同的 location 块来匹配不同类型的请求,然后将静态资源的请求直接由 Nginx 处理,而将动态资源的请求转发给后端的应用服务器。

比如:

server {    listen 80;    server_name example.com; # 动态请求交给后端应用服务器处理    location /{        proxy_pass http://your_app_server_ip:port;        proxy_set_header Host $host;        proxy_set_header X-Real-IP $remote_addr;        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;} # 静态请求由 Nginx 自己处理# 使用正则表达式匹配常见的静态文件扩展名    location ~* \.(jpg|jpeg|png|gif|ico|css|js|eot|svg|ttf|woff|woff2)nbsp;{        root /path/to/static/files;# 静态文件存放的根目录        expires 30d;# 设置静态文件的缓存时间,提高二次访问速度}}

整体流程,如下:

请求分流:Nginx 通过 location 配置,判断请求路径是否为静态资源。

location /:这是一个通用匹配,它会匹配所有没有被更精确的 location 块匹配到的请求。

静态资源处理:直接由 Nginx 读取本地磁盘文件、或缓存返回给用户。

动态资源转发:通过 proxy_passfastcgi_pass 将请求转发到后端应用服务器。

文章来源:mikechen.cc