Nginx动静分离
动静分离,是指将动态请求、和静态请求分开处理,从而提升网站的访问性能和稳定性。
客户端请求 | 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面试题总结》