Nginx动静分离配置详解(图文全面总结)

Nginx动静分离

动静分离,是指将动态请求、和静态请求分开处理,从而提升网站的访问性能和稳定性。

Nginx动静分离配置详解(图文全面总结)-mikechen

客户端请求
   |
Nginx
 ├── 静态资源URL (如 /static/img.jpg) → 本地磁盘直接返回
 └── 其他动态请求 (如 /user/info) → 反向代理到后端服务器

常见的静态内容包括:

  • HTML 文件 (.html, .htm);
  • CSS 样式表 (.css);
  • JavaScript 脚本 (.js);
  • 图片文件 (.jpg, .jpeg, .png, .gif, .svg);

常见的动态内容由以下技术栈生成:

  • PHP;
  • Python (Django, Flask);
  • Java (Spring, Servlet);
  • Node.js (Express);
  • ASP.NET;

Nginx 的动静分离是一种非常有效的优化网站性能、和可伸缩性的方法。

 

Nginx动静分离配置

通过合理配置 location 指令,可以将静态资源请求由 Nginx 直接处理、或分发给专门的静态资源服务器。

从而,将动态资源请求代理给后端的应用服务器。

Nginx动静分离配置,如下:

server {
    listen 80;
    server_name www.example.com;

    root /usr/share/nginx/html;  # 网站根目录

    # 1. 静态资源访问
    location /static/ {
        alias /usr/share/nginx/html/static/;
        expires 30d;
        access_log off;
    }

    # 2. 静态资源后缀匹配
    location ~* \.(jpg|jpeg|png|gif|ico|css|js|html|htm|woff|woff2|ttf|svg|eot)$ {
        root /usr/share/nginx/html;
        expires 30d;
        access_log off;
    }

    # 3. 动态请求转发
    location / {
        proxy_pass http://backend_server;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

# 后端应用服务器集群
upstream backend_server {
    server 127.0.0.1:8080;  # 可以配多台,实现负载均衡
}

location 指令是实现动静分离的核心,它可以根据请求的 URI 进行匹配,并执行相应的处理。

location /static/ 块(按路径分离静态资源)。

location / 块(动态请求代理)。

mikechen

mikechen睿哥,10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复架构即可获取《阿里架构师进阶专题全部合集》,后台回复面试即可获取《史上最全阿里Java面试题总结

评论交流
    说说你的看法