1. 程式人生 > >nginx反向代理,動靜態分離,快取

nginx反向代理,動靜態分離,快取

今天工作之餘,繼續拘搗鼓了一下nginx,嘗試了一下,nginx反向代理,動靜態請求分離,以及nginx快取應用,以及使用ngx_cache_purge清除指定URL

一,nginx反向代理配置

     #tomcat

Java程式碼  收藏程式碼
  1.    upstream tomcat_server{  
  2. server 127.0.0.1:8080;    
  3.    }  
  4. erver{  
  5. listen 80;  
  6. server_name www.wolfdream.com;  
  7. location / {  
  8.       proxy_redirect off;  
  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://tomcat_server;  
  13. }  

顯然就是使用者訪問www.wolfdream.com(需要設定本地localhost,將www.wolfdream.com指向nginx所在IP)的時候(或將www.wolfdream.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.wolfdream.com;  
  4.  index index.html;  
  5.  #proxy_pass http://tomcat_server;     
  6.        #charset koi8-r;  
  7.        #access_log  logs/host.access.log  main;  
  8.        location / {  
  9.            root   html;  
  10.            #index  index.html index.htm;  
  11.              proxy_redirect off;  
  12.       proxy_set_header Host $host;  
  13.       proxy_set_header X-Real-IP $remote_addr;  
  14.       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
  15.         }  
  16. location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$  
  17. {  
  18.     valid_referers none blocked 192.168.154.128 192.168.154.1;  
  19.     if ($invalid_referer)  
  20.     {  
  21.         rewrite ^  /403.jpg break;  
  22.     }  
  23.               if (!-f $request_filename) {  
  24.                  rewrite ^ /404.jpg last;  
  25.                }   
  26.                expires 30d;  
  27. }  
  28.        #error_page  404              /404.html;  
  29.        # redirect server error pages to the static page /50x.html  
  30.        #  
  31.        error_page   500 502 503 504  /50x.html;  
  32.        location = /404.jpg {  
  33.            root   html;  
  34.        }  
  35.     }  
  36. tomcat  
  37.    upstream tomcat_server{  
  38. server 127.0.0.1:8080;    
  39.    }  
  40.    server{  
  41. listen 192.168.154.128;  
  42. server_name www.wolfdream.com;  
  43. location / {  
  44.       proxy_redirect off;  
  45.       proxy_set_header Host $host;  
  46.       proxy_set_header X-Real-IP $remote_addr;  
  47.       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
  48.       proxy_pass http://tomcat_server;  
  49. }  
  50.    }  

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

Java程式碼  收藏程式碼
  1. #tomcat  
  2.    upstream tomcat_server{  
  3. server 127.0.0.1:8080;    
  4.    }  
  5.    server{  
  6. listen 192.168.154.128;  
  7. server_name www.wolf.com;  
  8. location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$  
  9. {  
  10.       root html;  
  11. }  
  12. location ~ .*\.(jsp|do)$ {  
  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. }  

OK!同一個域名,根據字尾不同,請求不同的服務,實現動態靜態請求相分離。仔細想一想,如果又出現了一種靜態的檔案,比如*.abc ,那難道又去修改那個配製檔案嗎?顯然不太合理,所以可以考慮將所有的表態檔案放在同一個根目錄下面,比如/static那麼可以將上面的靜態頁面請求修改一下:

Java程式碼  收藏程式碼
  1. location  /static  
  2.     {  
  3.           root html/static;  
  4.     }  

咦這樣是不是就好一些了,而且檔案的存放也比較有規範了。

三,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.     server{  
  5.     listen 192.168.154.128;  
  6.     server_name www.wolf.com;  
  7.     location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$  
  8.     {  
  9.            proxy_cache cache_one;  
  10.            proxy_cache_methods GET HEAD POST;  
  11.                proxy_cache_min_uses 1;  
  12.               proxy_cache_valid 200 302 10m;  
  13.               proxy_cache_valid 404 1m;  
  14.            proxy_cache_valid any 1m;  
  15.               proxy_cache_key "$host:$server_port$uri$is_args$args";  
  16.           proxy_redirect off;  
  17.           proxy_set_header Host $host;  
  18.           proxy_set_header X-Real-IP $remote_addr;  
  19.           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
  20.           proxy_pass http://tomcat_server;  
  21.     }  
  22.     location ~ .*\.(jsp)$ {  
  23.           proxy_redirect off;  
  24.           proxy_set_header Host $host;  
  25.           proxy_set_header X-Real-IP $remote_addr;  
  26.           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
  27.           proxy_pass http://tomcat_server;  
  28.     }  
  29.     location ~ /purge(/.*)  
  30.     {  
  31.        allow 192.168.154.128;  
  32.        allow 192.168.154.1;  
  33.            deny  all;  
  34.            proxy_cache_purge cache_one $host:$server_port$1$is_args$args;  
  35.         }   

恩,靜態頁面快取,動態請求不快取!

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

比如,www.wolfdraem.cn/1.jpg可以訪問到我的圖片,那麼用www.wolfdream.cn/purge/1.jpg  就可以清除圖片快取了。

恩。好了。好像今天是週五了。。。祝大家周未快樂。哈哈。。。。。


相關推薦

nginx反向代理靜態分離快取

今天工作之餘,繼續拘搗鼓了一下nginx,嘗試了一下,nginx反向代理,動靜態請求分離,以及nginx快取應用,以及使用ngx_cache_purge清除指定URL 一,nginx反向代理配置      #tomcat Java程式碼     

nginx反向代理走http+https通道後端走http通道導致前臺獲取不到後臺https內容的處理

前言: 目前我公司使用的伺服器架構為前臺為nginx反向代理,後端為單臺web伺服器或者叢集,目前的配置是這樣的,nginx反向代理配置了,http和https通道,但是後端伺服器配置為http通道。

nginx反向代理配置(包括sslhttps永久跳轉)

1、web機器配置nginx檔案 worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type applicatio

Nginx 與Tomcat 實現靜態分離、負載均衡

一. Nginx 簡介: Nginx 一個高效能的 HTTP 和反向代理伺服器, 具有很高的穩定性和支援熱部署、模組擴充套件也很容易。當遇到訪問的峰值,或者有人惡意發起慢速連線時,也很可能會導致伺服器實體記憶體耗盡頻繁交換,失去響應,只能重啟伺服器, Nginx 採取了

nginx 反向代理靜態請求分離,proxy_cache快取快取清除

一,nginx反向代理配置      #tomcat Java程式碼      upstream tomcat_server{  server 127.0.0.1:8080;       }  erver{  listen 80;  server_name www.

nginx 反向代理靜態請求分離 proxy cache緩存及緩存清除

pre 就會 spa last ddr break 人工 動靜 all 一,nginx反向代理配置 #tomcat 顯然就是用戶訪問www.wolfdream.com(需要設置本地localhost,將www.wolfdream.com指向

nginx反向代理實現動靜分離

nginx反向代理實現動靜分離nginx反向代理,實現動靜分離nginx反向代理 反向代理(Reverse Proxy)方式是指以代理服務器來接受Internet上的連接請求,然後將請求轉發給內部網絡上的服務器;並將從服務器上得到的結果返回給Internet上請求連接的客戶端,此時代理服務器對外就表現為一個

nginx反向代理html實現前後端分離部署

前後端分離開發、部署,融到一個專案中部署,修改程式碼部署較為頻繁,前端改動一小點也都需要後端一起打包部署。固想了nginx部署一個代理即可。  下載好nginx後在nginx.conf中增加如下程式碼: server { listen 8082;

運維:nginx反向代理配置域名解析到伺服器靜態專案

上線網站,由於還沒有寫後臺,用tomcat掛著很消耗記憶體,於是用nginx代理掛著連線伺服器的專案,簡單介紹域名解析到伺服器靜態專案一、購買域名(騰訊或者阿里購買,最便宜的是阿里的.top,2元一年)此處略二、購買伺服器最近的學生雲,騰訊1c2g、50g 50GSSD一年1

(二)nginx反向代理html實現前後端分離(部署一套html呼叫多個服務)

上篇部落格是一套頁面呼叫一個後端提供的服務,但是很多時候  我們後端會部署多個服務,為此部署配置一套nginx代理。 可以實現為nginx配置多種策略,如下說明: 負載均衡策略 1、輪詢(預設) 每個請求按時間順序逐一分配到不同的後端伺服器,如果後端伺服器down掉,能

(一)nginx反向代理html實現前後端分離部署

前後端分離開發、部署,融到一個專案中部署,修改程式碼部署較為頻繁,前端改動一小點也都需要後端一起打包部署。固想了nginx部署一個代理即可。  下載好nginx後在nginx.conf中增加如下程式碼: server { listen 8082

nginx 反向代理負載均衡重定向讀寫分離

一.nginx反向代理 配置檔案nginx.conf 在server裡面增加一條location:         location /test {                 proxy_pas

使用ansible結合keepalived高可用nginx反向代理部署小型企業環境

ansible自動部署 keepalived高可用 nginx反向代理 mysql數據庫 前言: ansible作為一款靈活、高效、功能豐富的自動化部署工具在企業運維管理中備受推崇。本文演示使用ansible部署小型企業服務框架,實現高可用、負載均衡的目標。如有錯誤敬請賜教。目標環境拓撲

配置Nginx反向代理WebSocket代理NoVNC為例

websocket nginx novnc linux 什麽是Nginx?Nginx (engine x) 是一個高性能的HTTP和反向代理服務器,也是一個IMAP/POP3/SMTP服務器。Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,並在

nginx反向代理和正向代理優缺點

csdn blank http class details targe sha clas gpo http://blog.csdn.net/lishaojun0115/article/details/53200629 nginx反向代理代理的是服務器,正向代理代理的是客

Nginx反向代理與後端服務采用連接池參數分析長連接減少TIME_WAIT

數據 模型 業務需求 技術 nginx服務器 程序 創建 反向代理 還需 前面已經講過,在使用locust直連後端服務器時,可以通過設置HTTP頭部為keep-alive,並在客戶端斷開連接,減少服務器的連接壓力。因為由客戶端斷開連接,客戶端的連接會變為TIME_WAIT狀

nginx反向代理服務器以及負載均衡從安裝到配置

配置文件 scripts 退出vim 錯誤碼 重啟 cal logs 點擊 listening nginx的具體作用不用細說,很強大,做負載均衡、反向代理服務器解決前端跨域問題等等。下面是nginx的安裝過程 首先nginx主要的依賴: 1 pcre、 pcre-d

nginx反向代理和rewrite進行解決跨域問題 去掉url中的一部分字串通過nginx正則生成新的url

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Nginx 反向代理負載均衡

方向代理: 修改nginx的配置檔案  upstream tomcatS{ server http://144.34.134.37:8080; server http://144.34.134.37:8081 } serve

Nginx反向代理tomcat獲取到真實IP的方法

Nginx 修改nginx.conf檔案 location / {       proxy_pass http://balance;       proxy_redirect off;  &nbs