Nginx实现简单动静分离

本文介绍如何使用Nginx实现静动分离部署,通过将静态资源与动态资源分开处理来提升网站性能。文中详细展示了配置过程及性能对比。

笔者最近在开始学提高web性能方面的知识。本文将介绍使用Nginx做分布式部署,实现静动分离,并且分析性能。

静动分离,就是将css、js、jpg等静态资源和jsp等动态资源分开处理,以此提高服务器响应速度,提高性能。

下面给出的例子实现了静动分离,其中静态资源,如css、js、jpg等由Nginx服务器处理,直接获取磁盘资源,动态资源,如jsp等由tomcat服务器处理。

首先配置Nginx。

nginx.conf的具体配置如下:


Nginx服务器作为代理服务器,监听80端口,判断如果的访问动态资源,则由监听8080端口的tomcat服务器处理,否则访问本地磁盘html文件夹里的静态资源。

启动nginx服务器和tomcat服务器,在浏览器访问80端口,查看firefox浏览器的开发者工具,如下:




可以发现,静态资源都是直接从磁盘获取,响应头都有Cache-Control字段,静态资源的请求时间均为0ms。

而直接使用8080端口访问页面,得到如下:


每个资源都需要花1-3ms来获取,而且响应头没有Cache-Control字段。由此可见,动静分离已经实现。

同样使用ab指令进行压力测试,得到结果如下:

静动分离:



无静动分离:


同样可以看到实现静动分离的版本的性能比较好,将完成所有请求的总时间*1000(因为数值太小)、吞吐率、传输率制作成条形图对比如下:

性能高低显而易见的。

上述内容只是nginx最简单的使用而已,nginx提高性能的内容还有很多,包括缓存等等。笔者会持续学习,更新博客。



### 配置 Nginx 实现动静分离 为了实现高效的动静分离Nginx 可以通过特定的配置来区分并分别处理静态和动态内容。这不仅有助于提高网站性能,还能优化资源管理。 #### 1. 动静分离的基本概念 动静分离是指将Web应用中的静态资源(如图片、CSS、JavaScript 文件)与动态页面分开部署和服务。这种方式可以减轻服务器负担,加快网页加载速度[^4]。 #### 2. 使用文件扩展名匹配静态资源 可以通过设置 `location` 块来识别不同类型的文件,并指定相应的处理方式: ```nginx server { listen 80; server_name example.com; location ~* \.(jpg|jpeg|png|gif|css|js)$ { root /var/www/static; expires 7d; # 设置缓存时间 add_header Cache-Control "public"; } } ``` 此段代码表示对于所有带有 `.jpg`, `.jpeg`, `.png`, `.gif`, `.css`, 或者`.js` 扩展名的请求都将被导向 `/var/www/static` 路径下查找相应文件,并且设置了七天的有效期以便浏览器能更好地利用本地缓存[^1]。 #### 3. 处理动态请求 对于其他未定义为静态资源的URL,则默认由后端应用程序负责响应: ```nginx location / { proxy_pass http://backend_server_group; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } ``` 这里假设有一个名为 `backend_server_group` 的上游组用于负载均衡多个后台服务器实例。该部分配置使得除上述静态资源外的所有请求都会被转发到这个后端集群中去执行进一步的操作。 #### 4. 合理运用缓存机制 除了简单的路径分发之外,在实际生产环境中还应该考虑加入更多高级特性比如HTTP压缩以及更复杂的缓存策略等措施来增强整体效率: ```nginx gzip on; gzip_types text/plain application/xml text/css application/javascript; ... fastcgi_cache_path /tmp/cache levels=1:2 keys_zone=mycache:10m inactive=60m; fastcgi_cache_key "$scheme$request_method$host$request_uri"; ``` 这段配置启用了Gzip压缩支持多种MIME类型的数据流传输;同时也开启了FastCGI级别的对象级缓存功能,有效减少了重复计算带来的开销。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值