公司想把图片从阿里云的服务器上迁移到自己的服务器,顺便建立一套新的图片存储系统。
开始打算使用FastDFS,但是FastDFS有自己的文件名生成规则,我们网站已经有了很多图片,如果每个图片都重新生成的话,工作量比较大。由于时间原因,临时采用了nginx来实现。
采用了3台服务器,每台服务器上都安装了nginx。用户访问相应图片时,根据自己定义的nginx location的hash规则,2012年的图片映射到一台机器上,2013年的映射到另一台机器上。
由于nginx已经支持了web缓存,考虑到图片可能会被临时替换,所以需要一个可以清除缓存的组件ngx_cache_puge。
- #现在并解压
- wget http://labs.frickle.com/files/ngx_cache_purge-2.0.tar.gz
- tar zxvf ngx_cache_purge-2.0.tar.gz
- #在安装nginx的时候 增加其组件
- ./configure --add-module=../ngx_cache-2.0 --prefix=/usr/local/nginx
- make
- make install
#现在并解压 wget http://labs.frickle.com/files/ngx_cache_purge-2.0.tar.gz tar zxvf ngx_cache_purge-2.0.tar.gz #在安装nginx的时候 增加其组件 ./configure --add-module=../ngx_cache-2.0 --prefix=/usr/local/nginx make make install
我开始装的是purge-1.0在make的时候报错,后来考虑是nginx版本不兼容的问题,换成了2.0之后就不报错了。
废话不多说,直接上nginx的配置文件。
入口nginx配置 负责分发到两天机器上
- #配置缓存目录 两个目录必须在同一分区
- proxy_temp_path /home/data0/proxy_temp_path;
- proxy_cache_path /home/data0/proxy_cache_path levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;
- #两天图片服务器上面都通过nginx部署了web服务
- upstream pic1{
- server 192.168.2.6:8080;
- }
- upstream pic2{
- server 192.168.2.2:8080;
- }
- server {
- listen 8080;
- server_name localhost;
- #charset koi8-r;
- #access_log logs/host.access.log main;
- #这个要放在前面,以免被提前拦截了,用来清除缓存的
- location ~ /purge(/.*){
- #allow 127.0.0.1;
- #allow 192.168.2.6;
- #deny all;
- proxy_cache_purge cache_one $host$1$is_args$args;
- }
- location ~ /{
- proxy_cache cache_one;
- proxy_cache_valid 200 304 12h;
- proxy_cache_valid 301 302 1m;
- proxy_cache_valid any 1m;
- #如果是图片路径总包含/2013/ 则映射到pic1
- proxy_cache_key $host$uri$is_args$args;
- if ( $request_uri ~* "\w*\/2013\/\w*\.(ico|gif|bmp|jpg|jpeg|png|swf)$"){
- proxy_pass http://pic1;
- }
- if ( $request_uri ~* "\w*\/2012\/\w*\.(ico|gif|bmp|jpg|jpeg|png|swf)$"){
- proxy_pass http://pic2;
- }
- proxy_pass http://pic2;
- }
- }
#配置缓存目录 两个目录必须在同一分区 proxy_temp_path /home/data0/proxy_temp_path; proxy_cache_path /home/data0/proxy_cache_path levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g; #两天图片服务器上面都通过nginx部署了web服务 upstream pic1{ server 192.168.2.6:8080; } upstream pic2{ server 192.168.2.2:8080; } server { listen 8080; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; #这个要放在前面,以免被提前拦截了,用来清除缓存的 location ~ /purge(/.*){ #allow 127.0.0.1; #allow 192.168.2.6; #deny all; proxy_cache_purge cache_one $host$1$is_args$args; } location ~ /{ proxy_cache cache_one; proxy_cache_valid 200 304 12h; proxy_cache_valid 301 302 1m; proxy_cache_valid any 1m; #如果是图片路径总包含/2013/ 则映射到pic1 proxy_cache_key $host$uri$is_args$args; if ( $request_uri ~* "\w*\/2013\/\w*\.(ico|gif|bmp|jpg|jpeg|png|swf)$"){ proxy_pass http://pic1; } if ( $request_uri ~* "\w*\/2012\/\w*\.(ico|gif|bmp|jpg|jpeg|png|swf)$"){ proxy_pass http://pic2; } proxy_pass http://pic2; } }
图片服务器nginx配置,这个类似fastdfs中的storage节点,会映射到服务器的/home/www路径
- server {
- listen 8080;
- server_name localhost;
- #charset koi8-r;
- #access_log logs/host.access.log main;
- location / {
- root /home/www;
- index index.html index.htm;
- }
server { listen 8080; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root /home/www; index index.html index.htm; } }
这样,通过路径就能访问到图片服务器上的图片。并且会对图片做12小时的缓存。当你需要清除缓存的时候,只要在图片的路径前面加一个/purge,再执行下即可。如图片路径http://img.naomi.cn/pic/2012/100.jpg 那么清除缓存的路径就是http://img.naomi.cn/purge/pic/2012/100.jpg。
相关推荐
《Nginx高性能Web服务器实战教程》是一本深入讲解如何利用Nginx构建高效稳定Web服务的书籍。Nginx以其高性能、轻量级、反向代理和负载均衡等特性,已经成为许多企业和开发者首选的Web服务器。这本书涵盖了从基础配置...
- **缓存**:利用 Nginx 的缓存机制加速页面加载。 #### DNS 域名解析流程概述 DNS(Domain Name System,域名系统)是互联网的一项服务,用来实现域名到 IP 地址之间的转换。下面是对 DNS 解析过程的详细解释: ...
- **文件缓存:** 开启sendfile功能,利用操作系统缓存加速文件传输。 - **HTTP压缩:** 启用gzip压缩,减少网络传输量。 - **错误日志:** 调整error_log的级别,避免记录过多无用信息。 - **健康检查:** 设置...
- **利用Nginx urlhash提高squid服务器命中率**:通过urlhash算法优化Squid缓存服务器的性能,提高缓存的命中率。 - **Nginx实践使用memcached模块加速PHP应用程序**:通过集成memcached缓存系统,可以显著提高...
在“nginx-1.21.3.zip”这个压缩包中,您将找到Nginx的Windows版本,这使得在Windows操作系统上部署和管理web服务器变得...对于Windows用户来说,"nginx-1.21.3.zip"提供了一个方便的途径来体验和利用Nginx的强大功能。
2. **负载均衡**:利用Nginx的负载均衡策略(轮询、权重、最少连接等),将请求分发到多个后端服务器,提高系统的可靠性和处理能力。 **四、HTTPS与SSL/TLS** 1. **HTTPS配置**:理解HTTPS协议原理,如何购买和...
在高并发访问的场景下,Nginx能够通过负载轮询将请求均匀地分配到多个后端服务器,确保所有服务器都能得到合理利用,避免单点故障,并提高整体系统的可用性和响应速度。Nginx的负载均衡策略还包括最少连接数、IP哈希...
- **Web2.0应用加速**:提供Web2.0应用优化和加速的策略,利用Nginx的强大功能提高用户体验。 - **性能测试与优化**:教授如何评估和优化Nginx及其承载应用的性能。 代理zh的Nginx教程不仅是一系列技术文档,更是...
最初是为了应对俄罗斯访问量第二的Rambler.ru网站的高并发请求需求,Nginx自此成为开源领域内一个备受瞩目的项目。它不仅能作为HTTP服务器使用,还具备邮件代理服务的能力,支持IMAP/POP3/SMTP协议。Nginx作为反向...
- **开启缓存加速**:利用Nginx内置的fastcgi_cache模块实现动态内容缓存,提高响应速度。 - **负载均衡设置**:通过upstream指令定义后端服务集群,并采用轮询、最少连接数等方式分发请求。 - **安全策略配置**:...
【Nginx 1.17.7:Web服务器的新里程碑】 Nginx 1.17.7 是一个流行的开源Web服务器的更新版本,它以其高性能、稳定性...对于正在本地测试的用户,理解这些细节将有助于充分利用Nginx 的优势并确保系统的稳定和安全。
### 构建微服务与Nginx应用 #### 标题和描述中的核心知识点解析 **构建微服务:** ...这种架构的主要优势包括: ...通过对Nginx的有效配置和利用,可以极大地提升系统的整体性能和稳定性,同时降低运维成本。
【Nginx新手入门常用需求】 Nginx是一款高性能、轻量级的HTTP服务器和反向代理服务器,因其模块化设计、高可靠性、低内存消耗和...随着深入学习,你将能够根据实际需求配置Nginx,实现更复杂的Web服务和负载均衡策略。
**16.2 利用Nginx urlhash提高squid服务器命中率** 介绍如何使用Nginx的urlhash特性来优化Squid缓存服务器的表现。 **16.3 Nginx实践使用memcached模块加速PHP应用程序** 通过集成memcached缓存模块,提高PHP应用...
2. **反向代理**:Nginx 可以作为反向代理服务器,接收来自客户端的请求,并转发到后端的 Web 服务器,这样可以实现负载均衡、缓存加速等功能。 3. **静态文件处理**:Nginx 在处理静态文件(如 HTML、CSS、...
通过代理服务器,用户可以访问原本无法直接访问的资源,或者利用代理服务器缓存的功能,加速资源加载。 ### 配置Nginx 配置Nginx涉及到编写配置文件,通常位于`/etc/nginx/nginx.conf`或者其他自定义路径下。配置...
### Nginx 实践指南:高性能 Web 服务的最佳实践 #### 概述 Nginx 是一款广泛应用于互联网行业的高性能 Web 服务器与反向代理服务器。它以其出色的稳定性、丰富的功能集、简单的配置方式和较低的内存消耗而闻名。...
`memcached`是一个分布式内存对象缓存系统,用于加速动态Web应用,通过在内存中缓存数据和对象来减少数据库的访问。 1. **Nginx基本配置结构** Nginx的配置文件通常位于`/etc/nginx/nginx.conf`,由多个`http`、`...
这个架构利用Nginx作为反向代理和负载均衡器,Tomcat作为Java应用服务器处理业务逻辑,而Redis则用作缓存系统以提升数据访问速度。下面我们将详细探讨这些组件的作用及其在集群环境中的配置与协同工作。 **Nginx** ...