摘要:場景實踐篇一作為靜態資源服務動態資源和靜態資源客戶端請求的頁面如果是靜態網頁,那么服務器會直接把靜態網頁的內容響應給客戶端。
Nginx-場景實踐篇 一、Nginx作為靜態資源Web服務 1、動態資源和靜態資源
客戶端請求的頁面如果是靜態網頁,那么服務器會直接把靜態網頁的內容響應給客戶端。如果客戶端請求的是動態網頁,服務器需要先把動態網頁換成靜態網頁,然后再把轉換后的靜態網頁響應給客戶端
靜態資源的幾種類型
瀏覽器渲染:HTML、CSS、JAVASCRIPT
圖片:JPEG、GIF、PNG ...
視頻:FLV、MPEG ...
文件:TXT、等任意下載文件
2、CDN(Content Delivery Network)內容分發網絡其基本思路是盡可能避開互聯網上有可能影響數據傳輸速度和穩定性的瓶頸和環節,使內容傳輸的更快、更穩定。通過在網絡各處放置節點服務器所構成的在現有的互聯網基礎之上的一層智能虛擬網絡,CDN系統能夠實時地根據網絡流量和各節點的連接、負載狀況以及到用戶的距離和響應時間等綜合信息將用戶的請求重新導向離用戶最近的服務節點上。其目的是使用戶可就近取得所需內容,解決 Internet網絡擁擠的狀況,提高用戶訪問網站的響應速度。3、配置語法
sendfile(文件讀取)
配置語法:sendfile on|off;
默認:無
Context:http,server,location,if in location
tcp_nopush(sendfile開啟的情況下,提高網絡包的傳輸效率)
配置語法:tcp_nopush on|off;
默認:無
Context:http,server,location
tcp_nodelay(keepalive連接下,提高網絡包的傳輸實時性)
配置語法:tcp_nodely on|off;
默認:無
Context:http,server,location
gzip(壓縮)
配置語法:gzip on|off;
默認:無
Context:http,server,location,if in location
gizp_comp_level(壓縮比)
配置語法:gzip_comp_level level;
默認:無;
Context:http,server,location
gzip_http_version(gzip的http的版本)
配置語法:gzip_http_version 1.0|1.1;
默認:無
Context:http,server,location
gzip_static(預讀gzip功能)
配置語法:gzip_static on|off|always;
默認:gzip_static off;
Context:http,server,location
4、瀏覽器緩存HTTP協議定義的緩存機制(如:Expires;Cache-control等)
瀏覽器無緩存:
瀏覽器請求→無緩存→請求WEB服務器→請求相應,協商→呈現
客戶端有緩存
瀏覽器請求→有緩存→校驗過期→呈現
校驗過期機制
校驗方式 | 對應頭信息 |
---|---|
校驗是否過期 | Expires、Cache-Control(max-age) |
協議中的Etag頭信息校驗 | Etag |
Last-Modified有信息校驗 | Last-Modified |
第一次請求:
第二次請求:
expires(response的headers添加Cache-Control、Expires)
配置語法:expires [modified] time; expires epoch |max |off;
默認:expires off;
Context:http,server,location,if in location
5、跨站訪問Nginx如何打開跨站訪問? Access-Controller-Allow-Origin
add_header
配置語法:add_header name value [always];
默認:無
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...;
默認:無
Context:server,location
valid_referers none blocked IP if($invalid_referer) { return 403; }
提醒:可以使用curl來測試配置好的防盜鏈:curl -e "http:www.baidu.com" -I IP
正向代理
對象是客戶端(比如說想訪問外網,把代理服務器設到代理地址,客戶端可以訪問任何網站)
反向代理
對象是服務端(并不需要關心訪問的是哪一臺服務器,反向代理就放在服務端。反向代理會幫我們處理請求)
proxy_pass
配置語法:proxy_pass URL;
默認:無
Context:location,if in location,limit_except
其他代理的一些語法補充:
proxy_buffering(緩沖區)
語法配置:proxy_buffering on | off;
默認:無;
Context:http,server,location
擴展:proxy_buffer_size、proxy_buffers、proxy_busy_buffers_size
proxy_redirect(跳轉重定向)
配置語法:proxy_redirect default;proxy_redirect off;proxy_redirect redirect replacement;
默認:無
Context:http,server,location
proxy_set_header(頭信息)
配置語法:proxy_set_header file value;
默認:proxy_set_header Host $proxy_host;proxy_set_header Connection close;
Context:http,server,location
擴展:proxy_hide_header、proxy_set_body
proxy_connect_timeout(超時)
配置語法:proxy_connect_timeout time;
默認:無
Context:http,server,location
擴展: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作為負載均衡服務
負載均衡:建立在現有網絡結構之上,它提供了一種廉價有效透明的方法擴展網絡設備和服務器的帶寬、增加吞吐量、加強網絡數據處理能力、提高網絡的靈活性和可用性。
負載均衡,英文名稱為Load Balance,其意思就是分攤到多個操作單元上進行執行,例如Web服務器、FTP服務器、企業關鍵應用服務器和其它關鍵任務服務器等,從而共同完成工作任務。
upstream
配置語法: upstream name {...}
默認:無
Context:http
簡單配置例子:
upstream ronaldo { server ip:port [param]; server ip:port [param]; server ip:port [param]; } server { location / { proxy_pass http://ronaldo; } }param參數解釋:
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:
只需要在upstream中加入 ip_hash; 即可
缺陷:如果走代理,那么remote_addr就不是用戶真實的ip
url_hash(1.7.2版本以后可用):
配置語法:hash key [consistent];
默認:無
Context:upstream
key可以是$request_uri,根據url進行hash四、Nginx作為緩存服務 1、緩存的類型
服務端緩存。例:memcache、reids
代理緩存。例:Nginx緩存服務端的數據
客戶端緩存。
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]...
默認:無
Context:http
proxy_cache
配置語法:proxy_cache zone | off;
默認:proxy_cache off;
Context:http,server,location
proxy_cache_valid(緩存過期周期)
配置語法:proxy_cache_valid [code...] time
默認:無
Context:http、server、location
proxy_cache_key(緩存的維度)
配置語法:proxy_cache_key string;
默認: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 緩存目錄內容
第三方擴展模塊:ngx_cache_purge
3、如何讓部分頁面不緩存
proxy_no_cache
配置語法:proxy_no_cache string ...;
默認:無
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;
默認:slice 0;
Context:http、server,location
優勢:每個子請求收到的數據都會形成一個獨立的文件,一個請求斷了,其他請求不受影響。
缺點:當文件很大或者slice很小的時候,可能會導致文件描述符耗盡等待情況。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/39909.html
摘要:場景實踐篇一作為靜態資源服務動態資源和靜態資源客戶端請求的頁面如果是靜態網頁,那么服務器會直接把靜態網頁的內容響應給客戶端。 Nginx-場景實踐篇 一、Nginx作為靜態資源Web服務 1、動態資源和靜態資源 客戶端請求的頁面如果是靜態網頁,那么服務器會直接把靜態網頁的內容響應給客戶端。如果客戶端請求的是動態網頁,服務器需要先把動態網頁換成靜態網頁,然后再把轉換后的靜態網頁響應給客戶...
摘要:假設反向代理層是,里能夠配置多個后端,并且能夠探測到多個后端的存活性。以為例,天然支持主從同步,官方也有哨兵機制,來做的存活性檢測。方法論上,高可用是通過冗余自動故障轉移來實現的。 究竟啥才是互聯網架構高可用 一、什么是高可用 高可用HA(High Availability)是分布式系統架構設計中必須考慮的因素之一,它通常是指,通過設計減少系統不能提供服務的時間。假設系統一直能夠提供服...
摘要:一靜態資源服務靜態資源類型類型文件類型瀏覽器端渲染圖片視頻文件等其他下載文件靜態資源服務場景二靜態資源核心配置文件讀取是一種高效傳輸文件的模式設置為表示啟動高效傳輸文件的模式。語法壓縮開啟壓縮,可以加快資源響應速度,同時節省網絡帶寬資源。 一、靜態資源web服務 showImg(https://segmentfault.com/img/remote/1460000015873025?w...
閱讀 3033·2021-10-13 09:39
閱讀 1879·2021-09-02 15:15
閱讀 2438·2019-08-30 15:54
閱讀 1803·2019-08-30 14:01
閱讀 2602·2019-08-29 14:13
閱讀 1411·2019-08-29 13:10
閱讀 2731·2019-08-28 18:15
閱讀 3869·2019-08-26 10:20