客戶端請求的頁面若是是靜態網頁,那麼服務器會直接把靜態網頁的內容響應給客戶端。若是客戶端請求的是動態網頁,服務器須要先把動態網頁換成靜態網頁,而後再把轉換後的靜態網頁響應給客戶端
靜態資源的幾種類型node
其基本思路是儘量避開互聯網上有可能影響數據傳輸速度和穩定性的瓶頸和環節,使內容傳輸的更快、更穩定。經過在網絡各處放置節點服務器所構成的在現有的互聯網基礎之上的一層智能虛擬網絡,CDN系統可以實時地根據網絡流量和各節點的鏈接、負載情況以及到用戶的距離和響應時間等綜合信息將用戶的請求從新導向離用戶最近的服務節點上。其目的是使用戶可就近取得所需內容,解決 Internet網絡擁擠的情況,提升用戶訪問網站的響應速度。
sendfile(文件讀取)算法
tcp_nopush(sendfile開啓的狀況下,提升網絡包的傳輸效率)後端
tcp_nodelay(keepalive鏈接下,提升網絡包的傳輸實時性)瀏覽器
gzip(壓縮)緩存
gizp_comp_level(壓縮比)服務器
gzip_http_version(gzip的http的版本)cookie
gzip_static(預讀gzip功能)網絡
HTTP協議定義的緩存機制(如:Expires;Cache-control等)
瀏覽器無緩存:負載均衡
客戶端有緩存curl
校驗方式 | 對應頭信息 |
---|---|
校驗是否過時 | Expires、Cache-Control(max-age) |
協議中的Etag頭信息校驗 | Etag |
Last-Modified有信息校驗 | Last-Modified |
expires(response的headers添加Cache-Control、Expires)
Nginx如何打開跨站訪問? Access-Controller-Allow-Origin
add_header
name能夠爲 Access-Controller-Allow-Origin 和 Access-Controller-Allow-Method
基於http_refer防盜鏈配置模塊
valid_referers none blocked IP if($invalid_referer) { return 403; }
提醒:可使用curl來測試配置好的防盜鏈:curl -e "http:www.baidu.com" -I IP
正向代理
反向代理
proxy_pass
其餘代理的一些語法 補充:
proxy_buffering(緩衝區)
proxy_redirect(跳轉重定向)
proxy_set_header(頭信息)
proxy_connect_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;
負載均衡:創建在現有網絡結構之上,它提供了一種廉價有效透明的方法擴展網絡設備和服務器的帶寬、增長吞吐量、增強網絡數據處理能力、提升網絡的靈活性和可用性。
負載均衡,英文名稱爲Load Balance,其意思就是分攤到多個操做單元上進行執行,例如Web服務器、FTP服務器、企業關鍵應用服務器和其它關鍵任務服務器等,從而共同完成工做任務。
upstream
簡單配置例子:
upstream ronaldo { server ip:port [param]; server ip:port [param]; server ip:port [param]; } server { location / { proxy_pass http://ronaldo; } }
param | 意義 |
---|---|
down | 當前的server暫時不參與負載均衡 |
weight=num | 權重,num越大,輪詢到的機率越大 |
backup | 預留的備份服務器 |
max_fails | 容許請求失敗的次數 |
fail_timeout | 通過max_fails失敗後,服務暫停的時間(默認是10s) |
max_conns | 限制最大的接收的鏈接數 |
算法 | 意義 |
---|---|
輪詢 | 按時間順序逐一分配到不一樣的後端服務器 |
加權輪詢 | weight值越大,分配到的訪問概率越高 |
ip_hash | 每一個請求按訪問IP的hash結果分配,這樣來自同一個IP就固定訪問同一個後端服務器 |
least_conn | 最少鏈接數,哪一個服務器鏈接數少就分發 |
url_hash | 按照訪問的URL的hash結果來分配請求,是每一個URL定向到同一個後端服務器 |
hash關鍵字值 | hash自定義的key |
ip_hash:
url_hash(1.7.2版本之後可用):
key能夠是$request_uri,根據url進行hash
proxy_cache_path
proxy_cache
proxy_cache_valid(緩存過時週期)
proxy_cache_key(緩存的維度)
$scheme$proxy_host$request_uri
;常見配置:
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; } }
proxy_no_cache
簡單示例
if ($request_uri ~ ^/(url_3|login|register|password\/reset)) { set $cookie_nocache 1; } location / { proxy_no_cache $cookie_nocache; }
slice
優點:每一個子請求收到的數據都會造成一個獨立的文件,一個請求斷了,其餘請求不受影響。
缺點:當文件很大或者slice很小的時候,可能會致使文件描述符耗盡等待狀況。