首页 后端开发 php教程 nginx反向代理,动静态请求分离,以及nginx缓存应用,以及使用ngx_cache_purge清除指定URL

nginx反向代理,动静态请求分离,以及nginx缓存应用,以及使用ngx_cache_purge清除指定URL

Aug 08, 2016 am 09:31 AM
header nbsp proxy server tomcat

一,nginx反向代理配置

 

     #tomcat

Java代码  

  1.    upstream tomcat_server{  
  2. server 127.0.0.1:8080;    
  3.    }  
  4.   
  5.   
  6.   
  7. erver{  
  8. listen 80;  
  9. server_name www.codes51.com;  
  10.   
  11. location / {  
  12.   
  13.       proxy_redirect off;  
  14.       proxy_set_header Host $host;  
  15.       proxy_set_header X-Real-IP $remote_addr;  
  16.       proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;  
  17.       proxy_pass http://tomcat_server;  
  18.   
  19. }  

 

显然就是用户访问www.codes51.com(需要设置本地localhost,将www.codes51.com指向nginx所在IP)的时候(或将www.codes51.com直接写在nginx所在的IP地址),将请求转到到后台的tomcat服务器,即127.0.0.1:8080,并将请求到的数据转发给client

 

 

二,动静态请求相分离

 

   神马意思?图片,JS,HTML等静态的东西去访问一台专门的服务器,而动态的请求去访问另一台服务器。就这么简单,上例子:

 

 

 

Java代码  

  1. server {  
  2.        listen       192.168.154.128:80;  
  3.        server_name  image.codes51.com;  
  4.  index index.html;  
  5.    
  6.    
  7.  #proxy_pass http://tomcat_server;     
  8.        
  9.        #charset koi8-r;  
  10.   
  11.        #access_log  logs/host.access.log  main;  
  12.    
  13.           
  14.   
  15.        location / {  
  16.            root   html;  
  17.            #index  index.html index.htm;  
  18.              proxy_redirect off;  
  19.       proxy_set_header Host $host;  
  20.       proxy_set_header X-Real-IP $remote_addr;  
  21.       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
  22.   
  23.   
  24.         }  
  25.   
  26.   
  27.         
  28. location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$  
  29. {  
  30.       
  31.     valid_referers none blocked 192.168.154.128 192.168.154.1;  
  32.     if ($invalid_referer)  
  33.     {  
  34.         rewrite ^  /403.jpg break;  
  35.     }  
  36.                  
  37.               if (!-f $request_filename) {  
  38.                  rewrite ^ /404.jpg last;  
  39.                }   
  40.                 
  41.                expires 30d;  
  42.   
  43. }  
  44.        #error_page  404              /404.html;  
  45.   
  46.        # redirect server error pages to the static page /50x.html  
  47.        #  
  48.        error_page   500 502 503 504  /50x.html;  
  49.        location = /404.jpg {  
  50.            root   html;  
  51.        }  
  52.   
  53.     }  
  54.   
  55. tomcat  
  56.    upstream tomcat_server{  
  57. server 127.0.0.1:8080;    
  58.    }  
  59.      
  60.      
  61.    server{  
  62. listen 192.168.154.128;  
  63. server_name www.codes51.com;  
  64.   
  65. location / {  
  66.          
  67.   
  68.       proxy_redirect off;  
  69.       proxy_set_header Host $host;  
  70.       proxy_set_header X-Real-IP $remote_addr;  
  71.       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
  72.       proxy_pass http://tomcat_server;  
  73.   
  74. }  
  75.   
  76.   
  77.   
  78.    }  
 

 

 

上面这种方式是通过设定不同的域名,可不可以在同一个域名中,通过判断后缀来将动态与静态请求相分离呢?

 

 

Java代码  

  1. #tomcat  
  2.    upstream tomcat_server{  
  3. server 127.0.0.1:8080;    
  4.    }  
  5.      
  6.      
  7.    server{  
  8. listen 192.168.154.128;  
  9. server_name www.codes51.com;  
  10.   
  11. location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$  
  12. {  
  13.          
  14.       root html;  
  15.   
  16. }  
  17.   
  18.   
  19. location ~ .*\.(jsp|do)$ {  
  20.          
  21.       proxy_redirect off;  
  22.       proxy_set_header Host $host;  
  23.       proxy_set_header X-Real-IP $remote_addr;  
  24.       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
  25.       proxy_pass http://tomcat_server;  
  26.   
  27. }  

 

 

OK!同一个域名,根据后缀不同,请求不同的服务,实现动态静态请求相分离。仔细想一想,如果又出现了一种静态的文件,比如*.abc ,那难道又去修改那个配制文件吗?显然不太合理,所以可以考虑将所有的表态文件放在同一个根目录下面,比如/static那么可以将上面的静态页面请求修改一下:

 

 

Java代码  

  1. location  /static  
  2.     {  
  3.              
  4.           root html/static;  
  5.   
  6.     }  

 

 

咦这样是不是就好一些了,而且文件的存放也比较有规范了。

 

 

三,nginx缓存应用

nginx具有web缓存服务,proxy_cache,但是有一个问题就是,proxy_cache不能清除指定的URL缓存,只能设置URL过期时间,但是有问题,有人就会很快解决问题,nginx第三方模块ngx_cache_purge能清除指定URL。

 

  nginx安装时需要将ngx_cache_purege加载进去。

 

Java代码  

  1. ./configure --user=www --group=www --add-module=/root/dxm/nginx/ngx_cache_purge-1.2   

 

其中,/root/dxm/nginx/ngx_cache_purge-1.2为ngx_cache_purge解压路径(附件中提供ngx_cache_purge tar包下载)

 

现在来一段实例,实现图片缓存:

   话说proxy_tem_path,与proxy_cache_path必须在同一个分区之下!

 

Java代码  

  1. proxy_temp_path /usr/local/nginx/proxy_temp;  
  2. proxy_cache_path /usr/local/nginx/proxy_cache_path levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=1g;  


Java代码  

  1. upstream tomcat_server{  
  2.     server 127.0.0.1:8080;    
  3.     }  
  4.       
  5.       
  6.     server{  
  7.     listen 192.168.154.128;  
  8.     server_name www.codes51.com;  
  9.       
  10.     location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$  
  11.     {  
  12.              
  13.            proxy_cache cache_one;  
  14.            proxy_cache_methods GET HEAD POST;  
  15.                proxy_cache_min_uses 1;  
  16.               proxy_cache_valid 200 302 10m;  
  17.               proxy_cache_valid 404 1m;  
  18.            proxy_cache_valid any 1m;  
  19.               proxy_cache_key "$host:$server_port$uri$is_args$args";  
  20.   
  21.           proxy_redirect off;  
  22.           proxy_set_header Host $host;  
  23.           proxy_set_header X-Real-IP $remote_addr;  
  24.           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
  25.           proxy_pass http://tomcat_server;  
  26.            
  27.   
  28.     }  
  29.       
  30.   
  31.     location ~ .*\.(jsp)$ {  
  32.              
  33.           proxy_redirect off;  
  34.           proxy_set_header Host $host;  
  35.           proxy_set_header X-Real-IP $remote_addr;  
  36.           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
  37.           proxy_pass http://tomcat_server;  
  38.   
  39.     }  
  40.       
  41.   
  42.     location ~ /purge(/.*)  
  43.     {  
  44.        allow 192.168.154.128;  
  45.        allow 192.168.154.1;  
  46.            deny  all;  
  47.            proxy_cache_purge cache_one $host:$server_port$1$is_args$args;  
  48.         }   

 

恩,静态页面缓存,动态请求不缓存!

 

大家看一下最后一段的那个purege配置,很显然,表示哪些IP可以手动清除指定的URL

 



以上就介绍了nginx反向代理,动静态请求分离,以及nginx缓存应用,以及使用ngx_cache_purge清除指定URL,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

tomcat如何部署jar项目 tomcat如何部署jar项目 Apr 21, 2024 am 07:27 AM

要将 JAR 项目部署到 Tomcat,请遵循以下步骤:下载并解压 Tomcat。配置 server.xml 文件,设置端口和项目部署路径。将 JAR 文件复制到指定的部署路径中。启动 Tomcat。使用提供的 URL 访问已部署的项目。

tomcat服务器怎么让外网访问 tomcat服务器怎么让外网访问 Apr 21, 2024 am 07:22 AM

要让 Tomcat 服务器对外网访问,需要:修改 Tomcat 配置文件,允许外部连接。添加防火墙规则,允许访问 Tomcat 服务器端口。创建 DNS 记录,将域名指向 Tomcat 服务器公有 IP。可选:使用反向代理提升安全性和性能。可选:设置 HTTPS 以提高安全性。

tomcat怎么部署多个项目 tomcat怎么部署多个项目 Apr 21, 2024 am 09:33 AM

要通过 Tomcat 部署多个项目,需要创建每个项目的 webapp 目录,然后:自动部署:将 webapp 目录放置在 Tomcat 的 webapps 目录中。手动部署:在 Tomcat 的 manager 应用程序中手动部署项目。项目部署后,可以通过其部署名称访问,例如:http://localhost:8080/project1。

tomcat安装目录在哪里 tomcat安装目录在哪里 Apr 21, 2024 am 07:48 AM

Tomcat 安装目录:默认路径:Windows:C:\Program Files\Apache Software Foundation\Tomcat 9.0macOS:/Library/Tomcat/Tomcat 9.0Linux:/opt/tomcat/tomcat9自定义路径:安装时可指定。查找安装目录:使用 whereis 或 locate 命令。

tomcat网站根目录在哪里 tomcat网站根目录在哪里 Apr 21, 2024 am 09:27 AM

Tomcat 网站根目录位于 Tomcat 的 webapps 子目录中,用于存储 Web 应用程序文件、静态资源和 WEB-INF 目录;它可以通过查找 Tomcat 配置文件中的 docBase 属性来找到。

tomcat并发连接数怎么查看 tomcat并发连接数怎么查看 Apr 21, 2024 am 08:12 AM

查看Tomcat并发连接数的方法:访问Tomcat Manager页面(http://localhost:8080/manager/html),输入用户名和密码。在左侧导航栏中点击Status->Sessions,即可在页面顶部看到并发连接数。

tomcat的端口号怎么看 tomcat的端口号怎么看 Apr 21, 2024 am 08:00 AM

Tomcat端口号可通过以下方法查看:检查server.xml文件中的<Connector>元素的port属性。访问Tomcat管理界面(http://localhost:8080/manager/html)并查看"Status"选项卡。在命令行中运行"catalina.sh version"并查看"Port:"行。

tomcat怎么运行两个不同端口号的项目 tomcat怎么运行两个不同端口号的项目 Apr 21, 2024 am 09:00 AM

在Tomcat服务器上运行不同端口号的项目需要以下步骤:修改server.xml文件并添加Connector元素以定义端口号。添加Context元素以定义与端口号关联的应用程序。创建WAR文件并部署到相应目录(webapps或webapps/ROOT)。重启Tomcat以应用更改。

See all articles