首頁 >後端開發 >php教程 >nginx反向代理,動靜態請求分離,以及nginx快取應用程式,以及使用ngx_cache_purge清除指定URL

nginx反向代理,動靜態請求分離,以及nginx快取應用程式,以及使用ngx_cache_purge清除指定URL

WBOY
WBOY原創
2016-08-08 09:31:181368瀏覽

一,nginx反向代理配置

 

     #tomcat

Java程式碼  

  1.    上游 tomcat_server{  
  2. 伺服器127.0.0.1:8080;    
  3.    }  
  4.   
  5.   
  6.   
  7. 伺服器{  
  8. 80;  
  9. 伺服器名稱 www.codes51.com;  
  10.   
  11. 位置 / {  
  12.   
  13.       proxy_redirect 關閉;  
  14.       proxy_set_header 主機 $host;  
  15.       proxy_set_header X-真實 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,將請求轉到的資料轉送給客戶端

 

 

二,動靜態請求相分離

 

   圖片,JS,HTML 等靜態的東西去存取一個專門的伺服器,而動態的請求去訪問另一台伺服器。就這麼簡單,上個例子:

 

 

 

Java程式碼  

  1. 伺服器 {  
  2.        聽       192.168.154.128:80  
  3.  
  4.        server_name  image.codes51.com;  
  5. 索引index.html;  
  6.    
  7.    
  8.  #proxy_pass http://tomcat_server;     
  9.        
  10.        #charset koi8-r;  
  11.   
  12.        #access_log  logs/host.access.log  main;  
  13.    
  14.           
  15.   
  16.        位置 / {  
  17.            根   html;  
  18.            #index  index.html index.htm;  
  19.              proxy_redirect 關閉;  
  20.       proxy_set_header 主機 $host;  
  21.       proxy_set_header X-真實 IP $remote_addr;  
  22.       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
  23.   
  24.   
  25.         }  
  26.   
  27.   
  28.         
  29. 位置 ~ .*.(gif|jpg|jpeg|png|bmp|swf)$  
  30. {  
  31.       
  32.     valid_referers 無被阻止 192.168.154.128 192.168.154.11192.168.154.11
  33.     if ($invalid_referer)  
  34.     {  
  35.         重寫 ^  /403.jpg break;  
  36.     }  
  37.                  
  38.               if (!-f $request_filename) {  
  39.                  重寫 ^ /404.jpg 最後;  
  40.                }   
  41.                 
  42.                過期 30 天;  
  43.   
  44. 🎜}  
  45.        #error_page  404                  
  46.        # 將伺服器錯誤頁面重新導向至
  47. static
  48.  頁面 /50x.html          #  
  49.        error_page   
  50. 500
  51.  502 503 504 503 504 
  52.        位置= /404.jpg {  
  53.            根   html;  
  54.        }  
  55.   
  56.     }  
  57.   
  58. 雄貓
  59.    上游 tomcat_server{  
  60. 伺服器127.0.0.1:8080;    
  61.    }  
  62.      
  63.      
  64.    伺服器{  
  65. 192.168.154.128;  
  66. 伺服器名稱 www.codes51.com;  
  67.   
  68. 位置 / {  
  69.          
  70.   
  71.       proxy_redirect 關閉;  
  72.       proxy_set_header 主機 $host;  
  73.       proxy_set_header X-真實 IP $remote_addr;  
  74.       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
  75.       proxy_pass http://tomcat_server;  
  76.   
  77. }  
  78.   
  79.   
  80.   
  81.    }  
 

 

 

上面這種方式是透過設定不同的域名,不能在同一個域名中,透過判斷後綴來將動態與靜態請求相分離呢?

 

 

Java程式碼  

  1. #tomcat  
  2.    上游 tomcat_server{  
  3. 伺服器127.0.0.1:8080;    
  4.    }  
  5.      
  6.      
  7.    伺服器{  
  8. 192.168.154.128;  
  9. 伺服器名稱 www.codes51.com;  
  10.   
  11. 位置 ~ .*.(gif|jpg|jpeg|png|bmp|swf)$  
  12. {  
  13.          
  14.       root html;  
  15.   
  16. }  
  17.   
  18.   
  19. 位置 ~ .*.(jsp|do)$ {  
  20.          
  21.       proxy_redirect 關閉;  
  22.       proxy_set_header 主機 $host;  
  23.       proxy_set_header X-真實 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. 位置/靜態  
  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=1d 


Java程式碼  

  1. 上游 tomcat_server{  
  2.     伺服器127.0.0.1:8080;    
  3.     }  
  4.       
  5.       
  6.     伺服器{  
  7.     聽192.168.154.128;  
  8.     伺服器名稱 www.codes51.com;  
  9.       
  10.     位置 ~ .*.(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. 302
  18.  10m;                 proxy_cache_valid 
  19. 404
  20.  1m;  
  21.            proxy_cache_valid 任 1m;                 proxy_cache_key 
  22. "$host:$server_port$uri$is_args$args"
  23. ;  
  24.   
  25.           proxy_redirect 關閉;  
  26.           proxy_set_header 主機 $host;  
  27.           proxy_set_header X-真實 IP $remote_addr;  
  28.           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;             proxy_pass http:
  29. //tomcat_server;
  30.   
  31.            
  32.   
  33.     }  
  34.       
  35.   
  36.     位置 ~ .*.(jsp)$ {  
  37.              
  38.           proxy_redirect 關閉;  
  39.           proxy_set_header 主機 $host;  
  40.           proxy_set_header X-真實 IP $remote_addr;  
  41.           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;             proxy_pass http:
  42. //tomcat_server;
  43.   
  44.    🎜 🎜 🎜    }  
  45.       
  46.   
  47.     location ~ /purge(/.*)  
  48.     {  
  49.        allow 192.168.154.128;  
  50.        allow 192.168.154.1;  
  51.            deny  all;  
  52.            proxy_cache_purge cache_one $host:$server_port$1$is_args$args;  
  53.         }   

 

恩,靜態頁面緩存,動態請求不緩存!

 

大家看一下最後一段的那個purege配置,很顯然,表示哪些IP可以手動清除指定的URL

 



以上就介紹了nginx反向代理,動靜態請求分離,以及nginx快取應用,以及使用ngx_cache_purge清除指定URL,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn