客户端请求的页面若是是静态网页,那么服务器会直接把静态网页的内容响应给客户端。若是客户端请求的是动态网页,服务器须要先把动态网页换成静态网页,而后再把转换后的静态网页响应给客户端
静态资源的几种类型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很小的时候,可能会致使文件描述符耗尽等待状况。