广州总部电话:020-85564311
广州总部电话:020-85564311

广州网站建设-小程序商城开发-广州小程序开发-企业微信开发公司-网站建设高端品牌-优网科技

20年
互联网应用服务商
请输入搜索关键词
知识库 知识库

优网知识库

探索行业前沿,共享知识宝库

Nginx动静分离详解(图文全面总结)
发布日期:2025-04-22 22:11:50 浏览次数: 837 来源:mikechen的架构笔记

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


大家好,我是mikechen。


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


Nginx动静分离

动静分离(Dynamic & Static Separation),是指将 动态请求(如PHP、Java、Python….等后端处理)和 静态资源(如HTML、CSS、JS、图片、视频等)分开处理。

文章预览

通过这种方式,可以极大的提高性能,静态资源由Nginx直接返回,减少后端服务器压力。

还可以提升并发能力,Nginx处理静态请求效率远高于后端应用服务器。


Nginx动静分离架构

整体架构,如下图所示:

文章预览
  1. +---------------------+  
  2. |       Client        |  
  3. +----------+----------+  
  4.            |  
  5.            |(HTTP请求)  
  6.            v  
  7. +---------------------+  
  8. |       Nginx        |  
  9. |(反向代理+动静分离)|  
  10. +----------+----------+  
  11.            |  
  12. +----------+----------+  
  13. |静态请求            |动态请求  
  14. |(HTML/CSS/JS/图片)  |(API/PHP/Java)  
  15. v                     v  
  16. +------------------+  +------------------+  
  17. |静态资源服务器     |  |后端应用服务器    |  
  18. |(本地/CDN)        |  |(Tomcat/Node等)  |  
  19. +------------------+  +------------------+

工作流程,如下:

首先,客户端发起请求。

比如:访问 example.com/index.html 或 example.com/api/data)。

其次,分发请求。

Nginx 根据请求类型分发:静态请求(如 .html, .jpg)、动态请求(如 .php, .java)。

静态请求

静态请求(如 .html, .jpg),直接从本地文件系统读取。

配置如下:

  1. server {  
  2.     listen 80;  
  3.     server_name example.com;  
  4.     # 静态资源路径匹配  
  5.     location ~* \.(html|css|js|jpg|png|gif|ico|mp4){  
  6.         root /data/static;  # 静态资源存放目录  
  7.         expires 30d;        # 缓存30天  
  8.         access_log off;     # 可选:关闭日志减少IO  
  9.     }  
  10. }

动态请求

动态请求(如 .php, .java)转发给后端服务器。

配置如下;

  1. location /api/{  
  2.     proxy_pass http://backend_server;  # 转发到后端服务器  
  3.     proxy_set_header Host $host;  
  4.     proxy_set_header X-Real-IP $remote_addr;  
  5. }

/api/ 开头的请求会被转发到后端(如Tomcat…等等)。

proxy_set_header :确保后端获取真实客户端IP。

整体配置,如下:

  1. server {
  2.     listen 80;
  3.     server_name your_domain.com;
  4.     root /data/www/html;# 默认网站根目录 (可以不包含静态资源)
  5.     location /{
  6.         try_files $uri $uri//index.php?$query_string;# 优先查找静态文件,找不到则转发给 index.php
  7.     }
  8.     # 处理静态资源
  9.     location ~* \.(html|htm|gif|jpg|jpeg|png|bmp|swf|css|js|woff|woff2|ttf|svg|ico){
  10.         root /data/www/static;# 静态资源根目录
  11.         expires 30d;          # 设置缓存过期时间为 30 天
  12.         access_log off;       # 关闭静态资源的访问日志
  13.         log_not_found off;    # 关闭找不到静态资源的错误日志
  14.     }
  15.     # 处理动态 PHP 请求
  16.     location ~ \.php$ {
  17.         fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;# PHP-FPM 的 socket 地址
  18.         fastcgi_index index.php;
  19.         fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  20.         include fastcgi_params;
  21.     }
  22.     # 可以根据需要添加其他动态语言的处理配置 (Python, Java 等)
  23.     # location ~ \.py$ {
  24.     #     uwsgi_pass 127.0.0.1:9090;
  25.     #     include uwsgi_params;
  26.     # }
  27. }

除此之外,结合 Nginx缓存 + CDN + 负载均衡,可大幅提升网站性能!

以上


最后送大家一个福利:

送我原创超30万字阿里架构师进阶专题合集


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


需要以上架构专题&面试答案的同学,加我微信即可领取!


添加时备注:资料


优网科技,优秀企业首选的互联网供应服务商

优网科技秉承"专业团队、品质服务" 的经营理念,诚信务实的服务了近万家客户,成为众多世界500强、集团和上市公司的长期合作伙伴!

优网科技成立于2001年,擅长网站建设、网站与各类业务系统深度整合,致力于提供完善的企业互联网解决方案。优网科技提供PC端网站建设(品牌展示型、官方门户型、营销商务型、电子商务型、信息门户型、DIY体验、720全景展厅及3D虚拟仿真)、移动端应用(手机站APP开发)、微信定制开发(微信官网、微信商城、企业微信)、微信小程序定制开发等一系列互联网应用服务。


我要投稿

姓名

文章链接

提交即表示你已阅读并同意《个人信息保护声明》

专属顾问 专属顾问
扫码咨询您的优网专属顾问!
专属顾问
马上咨询
联系专属顾问
联系专属顾问
联系专属顾问
扫一扫马上咨询
扫一扫马上咨询

扫一扫马上咨询

和我们在线交谈!