摘要:場景實踐篇一作為靜態(tài)資源服務(wù)動態(tài)資源和靜態(tài)資源客戶端請求的頁面如果是靜態(tài)網(wǎng)頁,那么服務(wù)器會直接把靜態(tài)網(wǎng)頁的內(nèi)容響應(yīng)給客戶端。
Nginx-場景實踐篇 一、Nginx作為靜態(tài)資源Web服務(wù) 1、動態(tài)資源和靜態(tài)資源
客戶端請求的頁面如果是靜態(tài)網(wǎng)頁,那么服務(wù)器會直接把靜態(tài)網(wǎng)頁的內(nèi)容響應(yīng)給客戶端。如果客戶端請求的是動態(tài)網(wǎng)頁,服務(wù)器需要先把動態(tài)網(wǎng)頁換成靜態(tài)網(wǎng)頁,然后再把轉(zhuǎn)換后的靜態(tài)網(wǎng)頁響應(yīng)給客戶端
靜態(tài)資源的幾種類型
瀏覽器渲染:HTML、CSS、JAVASCRIPT
圖片:JPEG、GIF、PNG ...
視頻:FLV、MPEG ...
文件:TXT、等任意下載文件
2、CDN(Content Delivery Network)內(nèi)容分發(fā)網(wǎng)絡(luò)其基本思路是盡可能避開互聯(lián)網(wǎng)上有可能影響數(shù)據(jù)傳輸速度和穩(wěn)定性的瓶頸和環(huán)節(jié),使內(nèi)容傳輸?shù)母臁⒏€(wěn)定。通過在網(wǎng)絡(luò)各處放置節(jié)點服務(wù)器所構(gòu)成的在現(xiàn)有的互聯(lián)網(wǎng)基礎(chǔ)之上的一層智能虛擬網(wǎng)絡(luò),CDN系統(tǒng)能夠?qū)崟r地根據(jù)網(wǎng)絡(luò)流量和各節(jié)點的連接、負(fù)載狀況以及到用戶的距離和響應(yīng)時間等綜合信息將用戶的請求重新導(dǎo)向離用戶最近的服務(wù)節(jié)點上。其目的是使用戶可就近取得所需內(nèi)容,解決 Internet網(wǎng)絡(luò)擁擠的狀況,提高用戶訪問網(wǎng)站的響應(yīng)速度。3、配置語法
sendfile(文件讀取)
配置語法:sendfile on|off;
默認(rèn):無
Context:http,server,location,if in location
tcp_nopush(sendfile開啟的情況下,提高網(wǎng)絡(luò)包的傳輸效率)
配置語法:tcp_nopush on|off;
默認(rèn):無
Context:http,server,location
tcp_nodelay(keepalive連接下,提高網(wǎng)絡(luò)包的傳輸實時性)
配置語法:tcp_nodely on|off;
默認(rèn):無
Context:http,server,location
gzip(壓縮)
配置語法:gzip on|off;
默認(rèn):無
Context:http,server,location,if in location
gizp_comp_level(壓縮比)
配置語法:gzip_comp_level level;
默認(rèn):無;
Context:http,server,location
gzip_http_version(gzip的http的版本)
配置語法:gzip_http_version 1.0|1.1;
默認(rèn):無
Context:http,server,location
gzip_static(預(yù)讀gzip功能)
配置語法:gzip_static on|off|always;
默認(rèn):gzip_static off;
Context:http,server,location
4、瀏覽器緩存HTTP協(xié)議定義的緩存機(jī)制(如:Expires;Cache-control等)
瀏覽器無緩存:
瀏覽器請求→無緩存→請求WEB服務(wù)器→請求相應(yīng),協(xié)商→呈現(xiàn)
客戶端有緩存
瀏覽器請求→有緩存→校驗過期→呈現(xiàn)
校驗過期機(jī)制
校驗方式 | 對應(yīng)頭信息 |
---|---|
校驗是否過期 | Expires、Cache-Control(max-age) |
協(xié)議中的Etag頭信息校驗 | Etag |
Last-Modified有信息校驗 | Last-Modified |
第一次請求:
第二次請求:
expires(response的headers添加Cache-Control、Expires)
配置語法:expires [modified] time; expires epoch |max |off;
默認(rèn):expires off;
Context:http,server,location,if in location
5、跨站訪問Nginx如何打開跨站訪問? Access-Controller-Allow-Origin
add_header
配置語法:add_header name value [always];
默認(rèn):無
Context:http,server,location,if in location
name可以為 Access-Controller-Allow-Origin 和 Access-Controller-Allow-Method6、防盜鏈
基于http_refer防盜鏈配置模塊
配置語法:valid_referers none|blocked|server_names|string...;
默認(rèn):無
Context:server,location
valid_referers none blocked IP if($invalid_referer) { return 403; }
提醒:可以使用curl來測試配置好的防盜鏈:curl -e "http:www.baidu.com" -I IP
正向代理
對象是客戶端(比如說想訪問外網(wǎng),把代理服務(wù)器設(shè)到代理地址,客戶端可以訪問任何網(wǎng)站)
反向代理
對象是服務(wù)端(并不需要關(guān)心訪問的是哪一臺服務(wù)器,反向代理就放在服務(wù)端。反向代理會幫我們處理請求)
proxy_pass
配置語法:proxy_pass URL;
默認(rèn):無
Context:location,if in location,limit_except
其他代理的一些語法補(bǔ)充:
proxy_buffering(緩沖區(qū))
語法配置:proxy_buffering on | off;
默認(rèn):無;
Context:http,server,location
擴(kuò)展:proxy_buffer_size、proxy_buffers、proxy_busy_buffers_size
proxy_redirect(跳轉(zhuǎn)重定向)
配置語法:proxy_redirect default;proxy_redirect off;proxy_redirect redirect replacement;
默認(rèn):無
Context:http,server,location
proxy_set_header(頭信息)
配置語法:proxy_set_header file value;
默認(rèn):proxy_set_header Host $proxy_host;proxy_set_header Connection close;
Context:http,server,location
擴(kuò)展:proxy_hide_header、proxy_set_body
proxy_connect_timeout(超時)
配置語法:proxy_connect_timeout time;
默認(rèn):無
Context:http,server,location
擴(kuò)展:proxy_read_timeout、proxy_send_timeout
配置文件中的例子:
proxy_pass http://127.0.0.1:8080; proxy_redirect default; proxy_set_header HOST $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_connect_timeout 30; proxy_send_timeout 60; proxy_read_timeout 60; proxy_buffer_size 32k; proxy_buffering on; proxy_buffers 4 128k; proxy_busy_buffers_size 256k; proxy_max_temp_file_size 256k;三、Nginx作為負(fù)載均衡服務(wù)
負(fù)載均衡:建立在現(xiàn)有網(wǎng)絡(luò)結(jié)構(gòu)之上,它提供了一種廉價有效透明的方法擴(kuò)展網(wǎng)絡(luò)設(shè)備和服務(wù)器的帶寬、增加吞吐量、加強(qiáng)網(wǎng)絡(luò)數(shù)據(jù)處理能力、提高網(wǎng)絡(luò)的靈活性和可用性。
負(fù)載均衡,英文名稱為Load Balance,其意思就是分?jǐn)偟蕉鄠€操作單元上進(jìn)行執(zhí)行,例如Web服務(wù)器、FTP服務(wù)器、企業(yè)關(guān)鍵應(yīng)用服務(wù)器和其它關(guān)鍵任務(wù)服務(wù)器等,從而共同完成工作任務(wù)。
upstream
配置語法: upstream name {...}
默認(rèn):無
Context:http
簡單配置例子:
upstream ronaldo { server ip:port [param]; server ip:port [param]; server ip:port [param]; } server { location / { proxy_pass http://ronaldo; } }param參數(shù)解釋:
param | 意義 |
---|---|
down | 當(dāng)前的server暫時不參與負(fù)載均衡 |
weight=num | 權(quán)重,num越大,輪詢到的概率越大 |
backup | 預(yù)留的備份服務(wù)器 |
max_fails | 允許請求失敗的次數(shù) |
fail_timeout | 經(jīng)過max_fails失敗后,服務(wù)暫停的時間(默認(rèn)是10s) |
max_conns | 限制最大的接收的連接數(shù) |
算法 | 意義 |
---|---|
輪詢 | 按時間順序逐一分配到不同的后端服務(wù)器 |
加權(quán)輪詢 | weight值越大,分配到的訪問幾率越高 |
ip_hash | 每個請求按訪問IP的hash結(jié)果分配,這樣來自同一個IP就固定訪問同一個后端服務(wù)器 |
least_conn | 最少連接數(shù),哪個服務(wù)器連接數(shù)少就分發(fā) |
url_hash | 按照訪問的URL的hash結(jié)果來分配請求,是每個URL定向到同一個后端服務(wù)器 |
hash關(guān)鍵字值 | hash自定義的key |
ip_hash:
只需要在upstream中加入 ip_hash; 即可
缺陷:如果走代理,那么remote_addr就不是用戶真實的ip
url_hash(1.7.2版本以后可用):
配置語法:hash key [consistent];
默認(rèn):無
Context:upstream
key可以是$request_uri,根據(jù)url進(jìn)行hash四、Nginx作為緩存服務(wù) 1、緩存的類型
服務(wù)端緩存。例:memcache、reids
代理緩存。例:Nginx緩存服務(wù)端的數(shù)據(jù)
客戶端緩存。
2、常用緩存配置
proxy_cache_path
配置語法proxy_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size [inactive=time] [max_size] [use_temp_path]...
默認(rèn):無
Context:http
proxy_cache
配置語法:proxy_cache zone | off;
默認(rèn):proxy_cache off;
Context:http,server,location
proxy_cache_valid(緩存過期周期)
配置語法:proxy_cache_valid [code...] time
默認(rèn):無
Context:http、server、location
proxy_cache_key(緩存的維度)
配置語法:proxy_cache_key string;
默認(rèn):proxy_cache_key $scheme$proxy_host$request_uri;
Context:http、server、location
常見配置:
proxy_cache_path cache_path levels=1:2 keys_zone=key_name:10m max_size=10g inactive=60m use_temp_path=off; server { loaction / { proxy_pass http://ronaldo; proxy_cache key_name; proxy_cache_valid 200 304 12h; proxy_cache_valid any 10m; proxy_cache_key $host$uri$is_args$args; add_header Nginx-Cache "$upstream_cache_status"; proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; } }2、清除指定緩存
rm -rf 緩存目錄內(nèi)容
第三方擴(kuò)展模塊:ngx_cache_purge
3、如何讓部分頁面不緩存
proxy_no_cache
配置語法:proxy_no_cache string ...;
默認(rèn):無
Context:http,server,location
簡單示例
if ($request_uri ~ ^/(url_3|login|register|password/reset)) { set $cookie_nocache 1; } location / { proxy_no_cache $cookie_nocache; }4、大文件分片請求
slice
語法配置:slice size;
默認(rèn):slice 0;
Context:http、server,location
優(yōu)勢:每個子請求收到的數(shù)據(jù)都會形成一個獨立的文件,一個請求斷了,其他請求不受影響。
缺點:當(dāng)文件很大或者slice很小的時候,可能會導(dǎo)致文件描述符耗盡等待情況。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/30709.html
摘要:場景實踐篇一作為靜態(tài)資源服務(wù)動態(tài)資源和靜態(tài)資源客戶端請求的頁面如果是靜態(tài)網(wǎng)頁,那么服務(wù)器會直接把靜態(tài)網(wǎng)頁的內(nèi)容響應(yīng)給客戶端。 Nginx-場景實踐篇 一、Nginx作為靜態(tài)資源Web服務(wù) 1、動態(tài)資源和靜態(tài)資源 客戶端請求的頁面如果是靜態(tài)網(wǎng)頁,那么服務(wù)器會直接把靜態(tài)網(wǎng)頁的內(nèi)容響應(yīng)給客戶端。如果客戶端請求的是動態(tài)網(wǎng)頁,服務(wù)器需要先把動態(tài)網(wǎng)頁換成靜態(tài)網(wǎng)頁,然后再把轉(zhuǎn)換后的靜態(tài)網(wǎng)頁響應(yīng)給客戶...
摘要:假設(shè)反向代理層是,里能夠配置多個后端,并且能夠探測到多個后端的存活性。以為例,天然支持主從同步,官方也有哨兵機(jī)制,來做的存活性檢測。方法論上,高可用是通過冗余自動故障轉(zhuǎn)移來實現(xiàn)的。 究竟啥才是互聯(lián)網(wǎng)架構(gòu)高可用 一、什么是高可用 高可用HA(High Availability)是分布式系統(tǒng)架構(gòu)設(shè)計中必須考慮的因素之一,它通常是指,通過設(shè)計減少系統(tǒng)不能提供服務(wù)的時間。假設(shè)系統(tǒng)一直能夠提供服...
摘要:一靜態(tài)資源服務(wù)靜態(tài)資源類型類型文件類型瀏覽器端渲染圖片視頻文件等其他下載文件靜態(tài)資源服務(wù)場景二靜態(tài)資源核心配置文件讀取是一種高效傳輸文件的模式設(shè)置為表示啟動高效傳輸文件的模式。語法壓縮開啟壓縮,可以加快資源響應(yīng)速度,同時節(jié)省網(wǎng)絡(luò)帶寬資源。 一、靜態(tài)資源web服務(wù) showImg(https://segmentfault.com/img/remote/1460000015873025?w...
閱讀 1456·2021-09-02 13:57
閱讀 1870·2019-08-30 15:55
閱讀 2407·2019-08-30 15:54
閱讀 2241·2019-08-30 15:44
閱讀 2733·2019-08-30 13:18
閱讀 480·2019-08-30 13:02
閱讀 627·2019-08-29 18:46
閱讀 1665·2019-08-29 11:25