关注△mikechen△,十余年BAT架构经验倾囊相授!

大家好,我是mikechen。
Nginx 动静分离是一种常见的 Web 服务优化技术,Nginx动静分离可以更好的提升性能@mikechen
Nginx动静分离
动静分离(Dynamic & Static Separation),是指将 动态请求(如PHP、Java、Python….等后端处理)和 静态资源(如HTML、CSS、JS、图片、视频等)分开处理。
通过这种方式,可以极大的提高性能,静态资源由Nginx直接返回,减少后端服务器压力。
还可以提升并发能力,Nginx处理静态请求效率远高于后端应用服务器。
Nginx动静分离架构
整体架构,如下图所示:
-
+---------------------+
-
| Client |
-
+----------+----------+
-
|
-
|(HTTP请求)
- v
-
+---------------------+
-
| Nginx |
-
|(反向代理+动静分离)|
-
+----------+----------+
-
|
-
+----------+----------+
-
|静态请求 |动态请求
-
|(HTML/CSS/JS/图片) |(API/PHP/Java)
- v v
-
+------------------+ +------------------+
-
|静态资源服务器 | |后端应用服务器 |
-
|(本地/CDN) | |(Tomcat/Node等) |
-
+------------------+ +------------------+
工作流程,如下:
首先,客户端发起请求。
比如:访问 example.com/index.html 或 example.com/api/data)。
其次,分发请求。
Nginx 根据请求类型分发:静态请求(如 .html, .jpg)、动态请求(如 .php, .java)。
静态请求
静态请求(如 .html, .jpg),直接从本地文件系统读取。
配置如下:
-
server {
-
listen 80;
-
server_name example.com;
-
# 静态资源路径匹配
-
location ~* \.(html|css|js|jpg|png|gif|ico|mp4)$ {
-
root /data/static; # 静态资源存放目录
-
expires 30d; # 缓存30天
-
access_log off; # 可选:关闭日志减少IO
-
}
- }
动态请求
动态请求(如 .php, .java)转发给后端服务器。
配置如下;
-
location /api/{
-
proxy_pass http://backend_server; # 转发到后端服务器
-
proxy_set_header Host $host;
-
proxy_set_header X-Real-IP $remote_addr;
- }
/api/
开头的请求会被转发到后端(如Tomcat…等等)。
proxy_set_header
:确保后端获取真实客户端IP。
整体配置,如下:
-
server {
-
listen 80;
-
server_name your_domain.com;
-
root /data/www/html;# 默认网站根目录 (可以不包含静态资源)
-
location /{
-
try_files $uri $uri//index.php?$query_string;# 优先查找静态文件,找不到则转发给 index.php
-
}
-
# 处理静态资源
-
location ~* \.(html|htm|gif|jpg|jpeg|png|bmp|swf|css|js|woff|woff2|ttf|svg|ico)$ {
-
root /data/www/static;# 静态资源根目录
-
expires 30d; # 设置缓存过期时间为 30 天
-
access_log off; # 关闭静态资源的访问日志
-
log_not_found off; # 关闭找不到静态资源的错误日志
-
}
-
# 处理动态 PHP 请求
-
location ~ \.php$ {
-
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;# PHP-FPM 的 socket 地址
-
fastcgi_index index.php;
-
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
-
include fastcgi_params;
-
}
-
# 可以根据需要添加其他动态语言的处理配置 (Python, Java 等)
-
# location ~ \.py$ {
-
# uwsgi_pass 127.0.0.1:9090;
-
# include uwsgi_params;
-
# }
- }
除此之外,结合 Nginx缓存 + CDN + 负载均衡,可大幅提升网站性能!
以上
最后送大家一个福利:
送我原创超30万字阿里架构师进阶专题合集。

以及给大家整理最全大厂Java面试题及答案详解,包含:Java、多线程、JVM、Spring、MySQL、Redis、中间件...等必考题答案详解。

需要以上架构专题&面试答案的同学,加我微信即可领取!
添加时备注:资料
优网科技,优秀企业首选的互联网供应服务商
优网科技秉承"专业团队、品质服务" 的经营理念,诚信务实的服务了近万家客户,成为众多世界500强、集团和上市公司的长期合作伙伴!
优网科技成立于2001年,擅长网站建设、网站与各类业务系统深度整合,致力于提供完善的企业互联网解决方案。优网科技提供PC端网站建设(品牌展示型、官方门户型、营销商务型、电子商务型、信息门户型、DIY体验、720全景展厅及3D虚拟仿真)、移动端应用(手机站、APP开发)、微信定制开发(微信官网、微信商城、企业微信)、微信小程序定制开发等一系列互联网应用服务。