Heim >Backend-Entwicklung >PHP-Tutorial >Nginx-Reverse-Proxy, Trennung von dynamischen und statischen Anforderungen und Nginx-Cache-Anwendung, und verwenden Sie ngx_cache_purge, um die angegebene URL zu löschen

Nginx-Reverse-Proxy, Trennung von dynamischen und statischen Anforderungen und Nginx-Cache-Anwendung, und verwenden Sie ngx_cache_purge, um die angegebene URL zu löschen

WBOY
WBOYOriginal
2016-08-08 09:31:181367Durchsuche

1. Nginx-Reverse-Proxy-Konfiguration

       #tomcat

Java-Code

  1. Upstream tomcat_server{
  2. Server 127.0.0.1:8080
  3. }
  4. immer{
  5. hören 80;
  6. Servername www.codes51.com;
  7. Standort / {
  8. Proxy_Redirect aus;
  9. Proxy_set_header Host $host;
  10. Proxy_set_header X-Real-IP $remote_addr
  11. Proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for
  12. Proxy_Pass http:
  13. //tomcat_server;
  14. }
Offensichtlich, wenn der Benutzer auf www.codes51.com zugreift (Sie müssen den lokalen lokalen Host festlegen und www.

codes51

.com auf die IP verweisen, auf der sich Nginx befindet) (oder schreiben Sie www.

codes51.com direkt an die IP-Adresse, an der sich Nginx befindet), übertragen Sie die Anfrage im Hintergrund an den Tomcat-Server, also 127.0.0.1:8080, und leiten Sie die angeforderten Daten an den Client weiter

2. Trennen Sie dynamische und statische Anforderungen

Wie meinst du das? Statische Dinge wie Bilder, JS und HTML gehen an einen dedizierten Server, während dynamische Anfragen an einen anderen Server gehen. So einfach ist das, hier ein Beispiel:

Java-Code

  1. Server {  
  2.        hören       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.        Standort / {  
  16.            root   html;  
  17.            #index  index.html index.htm;  
  18.              proxy_redirect aus;  
  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. Standort ~ .*.(gif|jpg|jpeg|png|bmp|swf)$  
  29. {  
  30.       
  31.     valid_referers none blockiert 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.                läuft 30 Tage ab;  
  42.   
  43. }  
  44.        #error_page  404              /404.html;  
  45.   
  46.        # Serverfehlerseiten zur statischen Seite /50x.html   umleiten
  47.        #  
  48.        error_page   500 502 503 504  /50x.html;  
  49.        location = /404.jpg {  
  50.            root   html;  
  51.        }  
  52.   
  53.     }  
  54.   
  55. Kater  
  56.    Upstream tomcat_server{  
  57. Server 127,0.0,1:8080;    
  58.    }  
  59.      
  60.      
  61.    Server{  
  62. hören 192.168.154.128;  
  63. Servername www.codes51.com;  
  64.   
  65. Standort / {  
  66.          
  67.   
  68.       proxy_redirect aus;  
  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. hören 192.168.154.128;  
  9. Servername www.codes51.com;  
  10.   
  11. Standort ~ .*.(gif|jpg|jpeg|png|bmp|swf)$  
  12. {  
  13.          
  14.       root html;  
  15.   
  16. }  
  17.   
  18.   
  19. Standort ~ .*.(jsp|do)$ {  
  20.          
  21.       proxy_redirect aus;  
  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. Standort  /statisch  
  2.     {  
  3.              
  4.           root html/statisch;  
  5.   
  6.     }  

 

 

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

 

 

三, nginx缓存应用

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

 

  Die nginx-Version enthält eine ngx_cache_purege-Datei.

 

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 und Proxy_cache_path müssen übrigens in derselben Partition liegen!

Java-Code

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


Java-Code

  1. upstream tomcat_server{  
  2.     Server 127.0.0.1:8080;    
  3.     }  
  4.       
  5.       
  6.     Server{  
  7.     hören 192.168.154.128;  
  8.     Servername www.codes51.com;  
  9.       
  10.     Standort ~ .*.(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.     Standort ~ .*.(jsp)$ {  
  32.              
  33.           proxy_redirect aus;  
  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. Standort ~ /purge(/.*)
  42. {
  43. erlauben 192.168.154.128;
  44. erlauben 192,168.154,1;
  45. alles leugnen;
  46. Proxy_cache_purge Cache_one $host:$server_port$
  47. 1$is_args$args; }  
Nun, statische Seiten werden zwischengespeichert, dynamische Anfragen werden jedoch nicht zwischengespeichert!

Schauen Sie sich die Purege-Konfiguration im letzten Absatz an. Offensichtlich zeigt sie an, welche IPs die angegebene URL manuell löschen können.



Das Obige stellt den Nginx-Reverse-Proxy, die dynamische und statische Anforderungstrennung und die Nginx-Cache-Anwendung vor und verwendet ngx_cache_purge zum Löschen der angegebenen URL, einschließlich des Inhalts. Ich hoffe, dass es für Freunde hilfreich ist, die an PHP-Tutorials interessiert sind.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn