nginx學(xué)習(xí)分享串講課件_第1頁
nginx學(xué)習(xí)分享串講課件_第2頁
nginx學(xué)習(xí)分享串講課件_第3頁
nginx學(xué)習(xí)分享串講課件_第4頁
nginx學(xué)習(xí)分享串講課件_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

JDBnginx學(xué)習(xí)分享

串講人:劉豪偉2019年3月15日

Modestymakesoneprogress,pridemakesonelagbehind.JDBnginx學(xué)習(xí)分享串講人:劉豪偉20CONTENTS

123Nginx實現(xiàn)反向代理

Nginx實現(xiàn)頁面緩存

Nginx實現(xiàn)負(fù)載均衡

CONTENTS123Nginx實現(xiàn)反向代理Ngi01Nginx

做反向代理

01Nginx做反向代理正向代理與反向代理

現(xiàn)實生活中的例子

1、正向代理:訪問

如上圖,因為目前google已被和諧,我們需要vpn才能科學(xué)訪問

vpn對于“我們”來說,是可以感知到的(我們連接vpn),vpn對于”google服務(wù)器”來說,是不可感知的(google只知道有http請求過來)。

對于人來說可以感知到,但服務(wù)器感知不到的服務(wù)器,我們叫他正向代理服務(wù)器。

正向代理與反向代理現(xiàn)實生活中的例子1、正向代理:訪問go正向代理與反向代理

現(xiàn)實生活中的例子

2、反向代理:通過反向代理實現(xiàn)負(fù)載均衡

總結(jié)

說白了:“正向”、“反向”是相對于人的感知來說的。人能感受到的代理就是正向代理,人感受不到的代理就是反向代理

如上圖,我們訪問的時候,百度有一個代理服務(wù)器,

通過這個代理服務(wù)器,可以做負(fù)載均衡,路由到不同的server。

此代理服務(wù)器,對于“我們”來說是不可感知的(我們只能感知到訪問的是百度的服務(wù)器,不知道中間還有代理服務(wù)器來做負(fù)載均衡)。

對于人來說不可感知,但對于服務(wù)器來說是可以感知的,我們叫他反向代理服務(wù)器。

正向代理與反向代理現(xiàn)實生活中的例子2、反向代理:通過反向nginx實現(xiàn)反向代理

nginx是高度模塊化的,各個功能都封裝在模塊中,而各個模塊的初始化則是根據(jù)配置文件來進(jìn)行的。

實現(xiàn)反向代理的模塊

模塊

:ngx_http_proxy_module指令:

proxy_pass:指定上游服務(wù)器的ip和端口

proxy_set_header:添加一個新的首部

指令語法

Syntax:proxy_passURL;Default:—

Context:location,ifinlocation,limit_except例子:proxy_pass96:8000;Syntax:proxy_set_headerfieldvalue;Default:proxy_set_headerHost$proxy_host;Context:http,server,location

nginx的配置中,可以使用變量

內(nèi)置變量:nginx自帶的

自定義變量:用戶定義的,定義方法:set變量名

變量值

演示配置

反向代理的例子

location/{

proxy_pass80;

proxy_set_headerX-Real-IP$remote_addr

proxy_set_headerHost$proxy_host;}

nginx實現(xiàn)反向代理nginx是高度模塊化的,各個功能都nginx實現(xiàn)反向代理

補充1location/admin{proxy_pass/;proxy_pass;}請求的url是/admin/a.html

如果代理方式是proxy_pass/;那么去的根目錄下找a.html

如果代理方式是proxy_pass;那么去的跟目錄下的admin找a.html補充2如果location中使用了模式匹配(正則),那么,location中的url會直接補充到代理節(jié)點的后面,此時,上游服務(wù)器的的后面不能有任何內(nèi)容,包括/location~\.php${

proxy_pass;<<<正確寫法

proxy_pass:80;<<<正確寫法

proxy_pass/;<<<錯誤寫法

proxy_pass/img;<<<錯誤寫法

}此時,如果請求的url是/book/stu/a.php,

就會代理成/book/stu/a.phpnginx實現(xiàn)反向代理補充1location/adminginx實現(xiàn)反向代理

補充3在location中如果有重定向的話,那么就用重定向后的uri替換掉代理節(jié)點中的urilocation/{rewrite/(.*)$/index.php?name=$1break;proxy_pass:80/img;}

此時,如果請求的url是

/bajie,

就會代理成/index.php?name=bajie補充4rewrite語法:rewriteregex(表達(dá)式)replacement(替換項)flag(標(biāo)志位)。

標(biāo)志位:break:

本條規(guī)則匹配完成后,終止匹配,不再匹配后面的規(guī)則

last:

相當(dāng)于apache里面的[L]標(biāo)記,表示rewrite,完成重寫指令,之后搜索相應(yīng)的URI或locationpermanent:

返回301永久重定向,瀏覽器地址會顯示跳轉(zhuǎn)后的URL地址

redirect:

返回302臨時重定向,瀏覽器地址會顯示跳轉(zhuǎn)后的URL地址

nginx實現(xiàn)反向代理補充3在location中如果有重02Nginx

實現(xiàn)頁面緩存

02Nginx實現(xiàn)頁面緩存Ngi點nx實現(xiàn)擊添加頁標(biāo)面題緩文存字

Nginx緩存的基本思路:

利用請求的局部性原理,將請求過的內(nèi)容在本地建立一個副本,下次訪問時不再連接到后端服務(wù)器,直接響應(yīng)本地內(nèi)容

Nginx服務(wù)器啟動后,會對本地磁盤上的緩存文件進(jìn)行掃描,在內(nèi)存中建立緩存索引,并有專門的進(jìn)程對緩存文件進(jìn)行過期判斷、更新等進(jìn)行管理

緩存格式:key-value格式

key儲存在內(nèi)存中:就是將請求的urivalue儲存在磁盤上:就是緩存的數(shù)據(jù)

需要注意的是Nginx緩存需要結(jié)合反向代理一起才能實現(xiàn)

問題

對于緩存,我們大概會有以下問題:

(1)緩存文件放在哪兒?

(2)如何指定哪些請求被緩存?

(3)緩存的有效期是多久?

(4)過了有效期的數(shù)據(jù)是否還能使用?

(5)對于某些請求,是否可以不走緩存?

Ngi點nx實現(xiàn)擊添加頁標(biāo)面題緩文存字Nginx緩存的基Ngi點nx實現(xiàn)擊添加頁標(biāo)面題緩文存字

(1)緩存文件放在哪兒?

設(shè)置緩存數(shù)據(jù)的相關(guān)信息

path:緩存目錄的位置

levels:指定使用幾級緩存目錄

keys_zone:指定緩存區(qū)域的名稱和緩存空間的大小

proxy_cache_path/data/nginx/cachelevels=1:2keys_zone=one:10m;

緩存結(jié)果:/data/nginx/cache/c/29/b7f54b2df7773722d382f4809d65029cNgi點nx實現(xiàn)擊添加頁標(biāo)面題緩文存字(1)緩存文件放在Ngi點nx實現(xiàn)擊添加頁標(biāo)面題緩文存字

(2)如何指定哪些請求被緩存?

1.如果開啟了緩存:nginx默認(rèn)會緩存所有g(shù)et和head方法的請求結(jié)果,緩存的key默認(rèn)使用請求字符串

2.指定哪些請求方法的請求被緩存

3.指定請求至少被發(fā)送了多少次以上時才緩存,可以防止低頻請求被緩存

Ngi點nx實現(xiàn)擊添加頁標(biāo)面題緩文存字(2)如何指定哪些Ngi點nx實現(xiàn)擊添加頁標(biāo)面題緩文存字

(3)緩存的有效期是多久?

proxy_cache_valid20030210m;定義了返回狀態(tài)碼是200和302的請求其數(shù)據(jù)緩存十分鐘

proxy_cache_validany1m;定義返回任何狀態(tài)碼的請求其數(shù)據(jù)都緩存1分鐘

Ngi點nx實現(xiàn)擊添加頁標(biāo)面題緩文存字(3)緩存的有效期Ngi點nx實現(xiàn)擊添加頁標(biāo)面題緩文存字

(4)過了有效期的數(shù)據(jù)是否還能使用?

哪種情況下可以使用過期的數(shù)據(jù)

error:上游服務(wù)器響應(yīng)error的時候

timeout:表示上游服務(wù)器響應(yīng)超時的時候

updating如果當(dāng)前正在更新,該參數(shù)允許使用陳舊的緩存響應(yīng)。

Ngi點nx實現(xiàn)擊添加頁標(biāo)面題緩文存字(4)過了有效期的Ngi點nx實現(xiàn)擊添加頁標(biāo)面題緩文存字

(5)對于某些請求,是否可以不走緩存?

哪種情況下可以不使用緩存

proxy_cache_bypass$cookie_nocache$arg_nocache$arg_comment;proxy_cache_bypass$http_pragma$http_authorization;如果任何一個字符串參數(shù)值不為空,或者不等于0,nginx就不會查找緩存,直接進(jìn)行代理轉(zhuǎn)發(fā)

Ngi點nx實現(xiàn)擊添加頁標(biāo)面題緩文存字(5)對于某些請求Ngi點nx實現(xiàn)擊添加頁標(biāo)面題緩文存字

演示配置

http段:

proxy_cache_path/cache/nginxlevels=1:1keys_zone=mycache:100m;Server段:

proxy_cachemycache;proxy_cache_valid20030210m;proxy_cache_valid3011h;proxy_cache_validany1m;proxy_cache_use_staleerrortimeoutinvalid_headerupdatinghttp_500;}

擴展:

如何檢查我所請求的數(shù)據(jù)是哪個主機發(fā)送給我的?

添加首部add_headerserverHost$server_addr;

如果檢查我所請求的數(shù)據(jù)在緩存中是否存在?

添加首部add_headercacheStatus$upstream_cache_status;Ngi點nx實現(xiàn)擊添加頁標(biāo)面題緩文存字演示配置htt03Nginx實現(xiàn)負(fù)載均衡

03Nginx實現(xiàn)負(fù)載均衡Ngi點nx實現(xiàn)擊添加負(fù)標(biāo)載題均文衡字

nginx負(fù)載均衡是ngx_http_upstream_module模塊的功能,

需要在配置文件http塊上下文中定義upstream塊,

指定一組負(fù)載均衡的后端服務(wù)器,

然后在上面講到的proxy_pass中引用,

就可以反向代理時實現(xiàn)負(fù)載均衡了。

需要注意的是:ngx_http_upstream段要在server段前面,要定義在http段中。

要實現(xiàn)基本的負(fù)載均衡用到的指令很簡單

Ngi點nx實現(xiàn)擊添加負(fù)標(biāo)載題均文衡字nginx負(fù)載均衡Ngi點nx實現(xiàn)擊添加負(fù)標(biāo)載題均文衡字

指令:upstreamExample:

upstreambackend{serverweight=5;server:8080max_fails=3fail_timeout=30s;serverdown;server80backup;}

作用:定義一個上游服務(wù)器組

格式

upstreamname{

server上游服務(wù)器1參數(shù)

參數(shù);server上游服務(wù)器1參數(shù)

參數(shù);server上游服務(wù)器1參數(shù)

參數(shù);}

注意:

定義服務(wù)器組的時候,不能寫http://fail_timeout:

在經(jīng)歷了max_fails次失敗后,

暫停服務(wù)的時間。

max_fails:和fail_timeout一起使用,

進(jìn)行對后端服務(wù)器的健康狀態(tài)檢查;

Ngi點nx實現(xiàn)擊添加負(fù)標(biāo)載題均文衡字指令:upstrNgi點nx實現(xiàn)擊添加負(fù)標(biāo)載題均文衡字

演示配置

http段:

upstreammyservers{server80weigjt=1;server81weight=2;}

Server段:

location/test{proxy_passhttp://myservers;}演示配置

http段:

upstreammyservers{ip_hash;server80weigjt=1;server81weight=2;}

Server段:

location/test{proxy_passhttp://myservers;}

Ngi點nx實現(xiàn)擊添加負(fù)標(biāo)載題均文衡字演示配置httNgi點nx擊實添現(xiàn)加負(fù)標(biāo)載題均文衡字

upstream支持4種負(fù)載均衡調(diào)度算法:

A)輪詢(默認(rèn)):每個請求按時間順序逐一分配到不同的后端服務(wù)器;

B)ip_hash:每個請求按訪問IP的hash結(jié)果分配,同一個IP客戶端固定訪問一個后端服務(wù)器??梢员WC來自同一ip的請求被打到固定的機器上,可以解決session問題。

C)url_hash:按訪問url的hash結(jié)果來分配請求,使每個url定向到同一個后端服務(wù)器。后臺服務(wù)器為緩存的時候效率。

D)fair:這是比上面兩個更加智能的負(fù)載均衡算法。此種算法可以依據(jù)頁面大小和加載時間長短智能地進(jìn)行負(fù)載均衡,也就是根據(jù)后端服務(wù)器的響應(yīng)時間來分配請求,響應(yīng)時間短的優(yōu)先分配。Nginx本身是不支持fair的,如果需要使用這種調(diào)度算法,必須下載Nginx的

upstream_fair模塊。

Ngi點nx擊實添現(xiàn)加負(fù)標(biāo)載題均文衡字upstreamJDB感謝您的觀看!

串講人:劉豪偉2019年3月15日

Doonethingatatime,anddowell.JDB感謝您的觀看!串講人:劉豪偉201JDBnginx學(xué)習(xí)分享

串講人:劉豪偉2019年3月15日

Modestymakesoneprogress,pridemakesonelagbehind.JDBnginx學(xué)習(xí)分享串講人:劉豪偉20CONTENTS

123Nginx實現(xiàn)反向代理

Nginx實現(xiàn)頁面緩存

Nginx實現(xiàn)負(fù)載均衡

CONTENTS123Nginx實現(xiàn)反向代理Ngi01Nginx

做反向代理

01Nginx做反向代理正向代理與反向代理

現(xiàn)實生活中的例子

1、正向代理:訪問

如上圖,因為目前google已被和諧,我們需要vpn才能科學(xué)訪問

vpn對于“我們”來說,是可以感知到的(我們連接vpn),vpn對于”google服務(wù)器”來說,是不可感知的(google只知道有http請求過來)。

對于人來說可以感知到,但服務(wù)器感知不到的服務(wù)器,我們叫他正向代理服務(wù)器。

正向代理與反向代理現(xiàn)實生活中的例子1、正向代理:訪問go正向代理與反向代理

現(xiàn)實生活中的例子

2、反向代理:通過反向代理實現(xiàn)負(fù)載均衡

總結(jié)

說白了:“正向”、“反向”是相對于人的感知來說的。人能感受到的代理就是正向代理,人感受不到的代理就是反向代理

如上圖,我們訪問的時候,百度有一個代理服務(wù)器,

通過這個代理服務(wù)器,可以做負(fù)載均衡,路由到不同的server。

此代理服務(wù)器,對于“我們”來說是不可感知的(我們只能感知到訪問的是百度的服務(wù)器,不知道中間還有代理服務(wù)器來做負(fù)載均衡)。

對于人來說不可感知,但對于服務(wù)器來說是可以感知的,我們叫他反向代理服務(wù)器。

正向代理與反向代理現(xiàn)實生活中的例子2、反向代理:通過反向nginx實現(xiàn)反向代理

nginx是高度模塊化的,各個功能都封裝在模塊中,而各個模塊的初始化則是根據(jù)配置文件來進(jìn)行的。

實現(xiàn)反向代理的模塊

模塊

:ngx_http_proxy_module指令:

proxy_pass:指定上游服務(wù)器的ip和端口

proxy_set_header:添加一個新的首部

指令語法

Syntax:proxy_passURL;Default:—

Context:location,ifinlocation,limit_except例子:proxy_pass96:8000;Syntax:proxy_set_headerfieldvalue;Default:proxy_set_headerHost$proxy_host;Context:http,server,location

nginx的配置中,可以使用變量

內(nèi)置變量:nginx自帶的

自定義變量:用戶定義的,定義方法:set變量名

變量值

演示配置

反向代理的例子

location/{

proxy_pass80;

proxy_set_headerX-Real-IP$remote_addr

proxy_set_headerHost$proxy_host;}

nginx實現(xiàn)反向代理nginx是高度模塊化的,各個功能都nginx實現(xiàn)反向代理

補充1location/admin{proxy_pass/;proxy_pass;}請求的url是/admin/a.html

如果代理方式是proxy_pass/;那么去的根目錄下找a.html

如果代理方式是proxy_pass;那么去的跟目錄下的admin找a.html補充2如果location中使用了模式匹配(正則),那么,location中的url會直接補充到代理節(jié)點的后面,此時,上游服務(wù)器的的后面不能有任何內(nèi)容,包括/location~\.php${

proxy_pass;<<<正確寫法

proxy_pass:80;<<<正確寫法

proxy_pass/;<<<錯誤寫法

proxy_pass/img;<<<錯誤寫法

}此時,如果請求的url是/book/stu/a.php,

就會代理成/book/stu/a.phpnginx實現(xiàn)反向代理補充1location/adminginx實現(xiàn)反向代理

補充3在location中如果有重定向的話,那么就用重定向后的uri替換掉代理節(jié)點中的urilocation/{rewrite/(.*)$/index.php?name=$1break;proxy_pass:80/img;}

此時,如果請求的url是

/bajie,

就會代理成/index.php?name=bajie補充4rewrite語法:rewriteregex(表達(dá)式)replacement(替換項)flag(標(biāo)志位)。

標(biāo)志位:break:

本條規(guī)則匹配完成后,終止匹配,不再匹配后面的規(guī)則

last:

相當(dāng)于apache里面的[L]標(biāo)記,表示rewrite,完成重寫指令,之后搜索相應(yīng)的URI或locationpermanent:

返回301永久重定向,瀏覽器地址會顯示跳轉(zhuǎn)后的URL地址

redirect:

返回302臨時重定向,瀏覽器地址會顯示跳轉(zhuǎn)后的URL地址

nginx實現(xiàn)反向代理補充3在location中如果有重02Nginx

實現(xiàn)頁面緩存

02Nginx實現(xiàn)頁面緩存Ngi點nx實現(xiàn)擊添加頁標(biāo)面題緩文存字

Nginx緩存的基本思路:

利用請求的局部性原理,將請求過的內(nèi)容在本地建立一個副本,下次訪問時不再連接到后端服務(wù)器,直接響應(yīng)本地內(nèi)容

Nginx服務(wù)器啟動后,會對本地磁盤上的緩存文件進(jìn)行掃描,在內(nèi)存中建立緩存索引,并有專門的進(jìn)程對緩存文件進(jìn)行過期判斷、更新等進(jìn)行管理

緩存格式:key-value格式

key儲存在內(nèi)存中:就是將請求的urivalue儲存在磁盤上:就是緩存的數(shù)據(jù)

需要注意的是Nginx緩存需要結(jié)合反向代理一起才能實現(xiàn)

問題

對于緩存,我們大概會有以下問題:

(1)緩存文件放在哪兒?

(2)如何指定哪些請求被緩存?

(3)緩存的有效期是多久?

(4)過了有效期的數(shù)據(jù)是否還能使用?

(5)對于某些請求,是否可以不走緩存?

Ngi點nx實現(xiàn)擊添加頁標(biāo)面題緩文存字Nginx緩存的基Ngi點nx實現(xiàn)擊添加頁標(biāo)面題緩文存字

(1)緩存文件放在哪兒?

設(shè)置緩存數(shù)據(jù)的相關(guān)信息

path:緩存目錄的位置

levels:指定使用幾級緩存目錄

keys_zone:指定緩存區(qū)域的名稱和緩存空間的大小

proxy_cache_path/data/nginx/cachelevels=1:2keys_zone=one:10m;

緩存結(jié)果:/data/nginx/cache/c/29/b7f54b2df7773722d382f4809d65029cNgi點nx實現(xiàn)擊添加頁標(biāo)面題緩文存字(1)緩存文件放在Ngi點nx實現(xiàn)擊添加頁標(biāo)面題緩文存字

(2)如何指定哪些請求被緩存?

1.如果開啟了緩存:nginx默認(rèn)會緩存所有g(shù)et和head方法的請求結(jié)果,緩存的key默認(rèn)使用請求字符串

2.指定哪些請求方法的請求被緩存

3.指定請求至少被發(fā)送了多少次以上時才緩存,可以防止低頻請求被緩存

Ngi點nx實現(xiàn)擊添加頁標(biāo)面題緩文存字(2)如何指定哪些Ngi點nx實現(xiàn)擊添加頁標(biāo)面題緩文存字

(3)緩存的有效期是多久?

proxy_cache_valid20030210m;定義了返回狀態(tài)碼是200和302的請求其數(shù)據(jù)緩存十分鐘

proxy_cache_validany1m;定義返回任何狀態(tài)碼的請求其數(shù)據(jù)都緩存1分鐘

Ngi點nx實現(xiàn)擊添加頁標(biāo)面題緩文存字(3)緩存的有效期Ngi點nx實現(xiàn)擊添加頁標(biāo)面題緩文存字

(4)過了有效期的數(shù)據(jù)是否還能使用?

哪種情況下可以使用過期的數(shù)據(jù)

error:上游服務(wù)器響應(yīng)error的時候

timeout:表示上游服務(wù)器響應(yīng)超時的時候

updating如果當(dāng)前正在更新,該參數(shù)允許使用陳舊的緩存響應(yīng)。

Ngi點nx實現(xiàn)擊添加頁標(biāo)面題緩文存字(4)過了有效期的Ngi點nx實現(xiàn)擊添加頁標(biāo)面題緩文存字

(5)對于某些請求,是否可以不走緩存?

哪種情況下可以不使用緩存

proxy_cache_bypass$cookie_nocache$arg_nocache$arg_comment;proxy_cache_bypass$http_pragma$http_authorization;如果任何一個字符串參數(shù)值不為空,或者不等于0,nginx就不會查找緩存,直接進(jìn)行代理轉(zhuǎn)發(fā)

Ngi點nx實現(xiàn)擊添加頁標(biāo)面題緩文存字(5)對于某些請求Ngi點nx實現(xiàn)擊添加頁標(biāo)面題緩文存字

演示配置

http段:

proxy_cache_path/cache/nginxlevels=1:1keys_zone=mycache:100m;Server段:

proxy_cachemycache;proxy_cache_valid20030210m;proxy_cache_valid3011h;proxy_cache_validany1m;proxy_cache_use_staleerrortimeoutinvalid_headerupdatinghttp_500;}

擴展:

如何檢查我所請求的數(shù)據(jù)是哪個主機發(fā)送給我的?

添加首部add_headerserverHost$server_addr;

如果檢查我所請求的數(shù)據(jù)在緩存中是否存在?

添加首部add_headercacheStatus$upstream_cache_status;Ngi點nx實現(xiàn)擊添加頁標(biāo)面題緩文存字演示配置htt03Nginx實現(xiàn)負(fù)載均衡

03Nginx實現(xiàn)負(fù)載均衡Ngi點nx實現(xiàn)擊添加負(fù)標(biāo)載題均文衡字

nginx負(fù)載均衡是ngx_http_upstream_module模塊的功能,

需要在配置文件http塊上下文中定義upstream塊,

指定一組負(fù)載均衡的后端服務(wù)器,

然后在上面講到的proxy_pass中引用,

就可以反向代理時實現(xiàn)負(fù)載均衡了。

需要注意的是:ngx_http_upstream段要在server段前面,要定義在http段中。

要實現(xiàn)基本的負(fù)載均衡用到的指令很簡單

Ngi點nx實現(xiàn)擊添加負(fù)標(biāo)載題均文衡字nginx負(fù)載均衡Ngi點nx實現(xiàn)擊添加負(fù)標(biāo)載題均文衡字

指令:upstreamExample:

upstreambackend{serverweight=5;server:8080max_fails=3fail_timeout=30s;serverdown;server80backup;}

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論