服務商:css
網宿html
藍汛java
阿里雲nginx
騰訊雲c++
做用:redis
用來緩存和加速靜態文件的讀取
減輕後端db層的訪問壓力shell
特色:
後端
全國節點緩存
服務器
功能:
1.能夠按照域名緩存
2.能夠按照文件後綴緩存
3.能夠提早緩存預熱
@記錄 直接訪問baidu.com
A記錄 域名指向一個IP地址 www.oldzhang.com VIP
CNAME記錄 www.oldzhang.com cdn.www.oldzhang.com
CDN服務: 回源IP
www.oldzhang.com
VIP(10.0.0.10)
CDN
內容分發網絡(Content Delivery Network
),經過將服務內容分發至全網加速節點,利用全球調度系
統使用戶可以就近獲取,有效下降訪問延遲,提高服務可用性。
CDN
第一下降機房的使用帶寬,由於不少資源經過 CDN 就直接返回用戶了;
第二解決不一樣運營商之間的互聯,由於可讓聯通的網絡訪問聯通讓電信的網絡訪問電信,起到加速用戶訪問的目的;
第三:解決用戶訪問的地域問題,就近返回用戶資源。
百度CDN https://cloud.baidu. com/product/cdn.html
阿里CDN
提早對靜態內容進行預緩存,避免大量的請求回源,致使主站網絡帶寬被打滿而致使數據沒法更新,
另外 CDN 能夠將數據根據訪問的熱度不一樣而進行不一樣 級別的緩存,例如訪問量最高的資源訪問 CDN
邊緣節點的內存,其次的放在 SSD 或者 SATA ,再其次的放在雲存儲,這樣兼顧了速度與成本
① 用戶發出請求:本地DNS服務器經過解析獲得ICP2 DNS受權服務器的地址
② 本地DNS服務器訪問ICP2 DNS受權服務器,獲知域名的詳細解析由SSR受權服務器負責
③ 本地DNS服務器訪問SSR受權服務器,獲得離用戶最近的節點服務器的地址,會送給用戶;
④ 用戶訪問ChinaCache節點服務器,節點服務器從源站取得用戶所需內容並將內容發給用戶。
源站設置主要是對資源文件的源站地址進行管理以及配合源站實際資源狀況進行一些更高級的設置,包括主備線路、端口號、輪詢權重等。其中,源站地址配置支持 IP 和域名的形式,例如:
IP:1.1.1.1 域名:a.test.com 針對源站地址爲域名源站的狀況,CDN 節點會進行一次 DNS 解析,解析到的 IP 即爲真實的源站地址。
upstream test {
server 1.1.1.1:80;
server 1.1.1.2:80;
server 1.1.1.3:80;
}
回源host
CDN 節點回源時會在 HTTP 請求頭 HOST 字段裏替換該域名,通常是域名形式的字符串,例如:ccc.test.com。 回源 HOST 爲可選配置項,默認爲空,即遵循訪問域名; 源站地址和回源 HOST 的區別:源站地址是 CDN 節點回源時可以找到對應的源站服務器,源站可能有多個 WEB 站點,回源 HOST 則指明瞭資源所在的站點。 示例:
location / {
# 回源Host,默認使用訪問域名去回源
# proxy_set_header Host $host:$server_port;
# 自定義回源host
proxy_set_header Host ccc.test.com:$server_port;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://test;
}
wget http://downloads.sourceforge.net/project/pcre/pcre/8.37/pcre-8.37.tar.gz
以及使用yum安裝zlib庫
yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel
二、安裝軟件的方式
進入/usr/src目錄
cd /usr/src
wget url 命令去下載或者經過xshell的拖拉方式
wget http://nginx.org/download/nginx-1.16.1.tar.gz
tar -xvf nginx-1.16.1.tar.gz
cd nginx-1.16.1
./configure
yum -y list java*
yum -y list java* |less
yum -y install java-1.8.0-openjdk.x86_64
一、安裝依賴庫
yum install readline-devel pcre-devel openssl-devel perl -y
二、下載openresty
wget https://openresty.org/download/openresty-1.15.8.3.tar.gz
三、解壓並進入目錄
tar -zxvf openresty-1.15.8.3.tar.gz
cd openresty-1.15.8.3
四、建立安裝目錄並配置
./configure --prefix=/usr/local/openresty --with-luajit --without-http_redis2_module --with-http_iconv_module
一、本地站點ETag緩存
示範開啓靜態文件緩存
環境:
nginx -v
nginx version: openresty/1.15.8.3
(該版本Nginx原生有ETag,默認啓用了,若是沒有須要對ETag模塊進行添加,添加後使用etag on;命令開啓)
server {
listen 80;
server_name localhost;
#....其餘配置刪除了
location / {
root html;
index index.html index.htm;
}
location ~ .*\.(js|css|gif|jpg|jpeg|png|bmp|swf|flv|html|htm)$ {
expires 1d;#緩存一天過時
}
}
第一次請求時花費37ms
內容未變的狀況下後續訪問請求響應的狀態碼會是304(無更改)花費19ms
二、對反向代理開啓緩存
#-----------------nginx cache configure start
proxy_cache_path /ngx_cache levels=1:2 表示緩存目錄的第一級目錄是1個字符,第二級目錄是2個字符
keys_zone=my_cache:10m max_size=1g inactive=30d use_temp_path=on;
proxy_temp_path /ngx_cache/temp;#臨時目錄
proxy_cache_key $host$request_uri;#緩存的KEY
#-----------------nginx cache configure end
2.2定義一個反代所需upstream和server
upstream fpa.cn {
server 127.0.0.1:81;
}
server {
listen 81;
root html;
}
server {
listen 80;
server_name localhost;
charset utf-8;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
proxy_pass http://fpa.cn;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
2.4對反代的請求中的靜態文件使用緩存
server {
listen 80;
server_name localhost;
charset utf-8;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
proxy_pass http://fpa.cn;
}
location ~ .*\.(js|css|gif|jpg|jpeg|png|bmp|swf|flv|html|htm)$ {
#proxy_cache_use_stale error timeout http_500 http_502 http_503 http_504;#對error等容許使用過時緩存進行返回
proxy_cache my_cache;#指定使用my_cache這個緩存配置
proxy_cache_key $host$uri$is_args$args;#設置緩存的key(在緩存的文件裏開頭有KEY:值)
proxy_cache_valid 1d;#緩存有效期1天
#proxy_ignore_headers Cache-Control;#開啓後忽略不容許緩存
add_header X-Cache $upstream_cache_status;#將緩存是否命中的結果返回
add_header X-Via $server_addr;#將緩存服務器IP返回
proxy_pass http://fpa.cn;#反代
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
效果圖: