目录
1,nginx负载均衡的算法有哪些?
round robin(默认):轮询方式,依次将请求分配到各个服务器。
weight(权重):根据权重将请求分配到各个机器上,权重大分配的请求多。
ip_hash:根据请求的IP哈希值把请求分配到某个机器上,保证同一个IP分配到同一个机器上。
url_hash:根据请求的url地址的哈希值将请求分配到某个机器上,保证同一个url被分配到同一个机器上。
fair(第三方):根据后端响应的时间来分发,时间段的分配的多。
2,http状态码都有哪些?
1xx系列:信息性状态码,表示服务器已经接收到请求并正在处理,但需要进一步的操作才能完成请求。
- 100 Continue:请求正在进行,客户端应继续发送请求或数据。
- 101 Switching Protocols:服务器将遵循客户端的请求,并切换到指定的协议。
- 102 Processing:服务器已经收到请求,正在处理。
2xx系列:成功状态码,表示请求已经成功被服务器接收、理解和处理。
- 200 OK:请求成功,响应包含请求的资源。
- 201 Created:请求成功,并创建了新的资源。
- 202 Accepted:请求已被接受,但处理尚未完成。
- 203 Non-Authoritative Information:请求成功,但返回的信息不是来自于权威数据源。
- 204 No Content:请求成功,但没有返回任何内容。
- 205 Reset Content:请求成功,并要求客户端重置文档视图。
- 206 Partial Content:请求成功,返回部分GET请求的范围。
3xx系列:重定向状态码,表示客户端需要进行进一步的操作才能完成请求。
- 300 Multiple Choices:请求的资源有多个选择。
- 301 Moved Permanently:请求的资源已被永久移动到新位置。
- 302 Found:请求的资源已被临时移动到新位置。
- 303 See Other:请求的资源可以在另一个URI上找到。
- 304 Not Modified:请求的资源未被修改,客户端可以使用缓存的版本。
- 307 Temporary Redirect:请求的资源临时从一个URI重定向到另一个URI。
- 308 Permanent Redirect:请求的资源永久从一个URI重定向到另一个URI。
4xx系列:客户端错误状态码,表示客户端发起的请求有错误或无法完成。
- 400 Bad Request:请求无效,服务器无法理解。
- 401 Unauthorized:请求需要身份验证。
- 403 Forbidden:服务器拒绝请求。
- 404 Not Found:请求的资源未找到。
- 405 Method Not Allowed:请求方法不被允许。
- 406 Not Acceptable:请求的资源无法满足客户端请求的响应格式。
- 408 Request Timeout:请求超时,服务器等待客户端完成请求时发生超时。
- 410 Gone:请求的资源已被永久删除。
- 413 Payload Too Large:请求的负载太大。
- 414 URI Too Long:请求的URI太长。
5xx系列:服务器错误状态码,表示服务器在处理请求时发生了错误。
- 500 Internal Server Error:服务器内部错误。
- 501 Not Implemented:服务器不支持请求的功能。
- 502 Bad Gateway:服务器作为网关或代理时收到了无效响应。
- 503 Service Unavailable:服务器暂时无法处理请求。
- 504 Gateway Timeout:服务器作为网关或代理时,等待上游服务器响应超时。
3,sesssion,cookie,token,jwt的区别?
session:数据存储在服务器,服务端返回sessionid,一般这个sessionid放在cookie中,通过sessionid找到存储的数据。由于数据存储在服务器,数据会比较安全。一般sessionid的维护和存储都是浏览器完成的,当然,系统也可以自己传递sessionid。
cookie:数据通过key,value的方式返回给浏览器,数据也存储在服务器,浏览器访问的时候每次都会携带这些数据。数据通过浏览器或者抓包可以查看到,也可以请求的时候伪造数据,数据安全性比较低,如果cookie数据非常多,每次请求都需要携带大量的cookie数据,会降低请求的效率。
token:一般登录后通过api把token返回,客户端每次请求的时候,都需要把token放入到参数里或者协议头里。这个token的数据也是存储在服务器,数据安全有保证,通过客户端维护token。
jwt:由头,数据,签名三部分组成,由api返回,客户端每次请求都把jwt放入到协议头里传输,为了安全,数据都会进行加密的,签名部分校验数据不被篡改,服务器不存储数据的。
4,get和post都有哪些区别?
传输方式不同,get的数据是放到url后面,post的数据是放在请求体里的。
传输大小不同,get传递的数据会有限制,post提交的数据没有大小限制。(协议上没有限制,但是具体的服务器为了安全,会有大小的限制,可以通过调整参数改变)
安全性,get在浏览器请求的时候,会记录url后面的数据,post提交的数据不会记录。
编码方式,get的编码方式固定,url编码,post通过和其他协议头配合,可以是任意编码。
行为限制,在浏览器中,get可以后退,post无法后退。
5,http的请求方式都有哪些?
POST
GET
HEAD:用于获取报文头。
PUT
PATCH:对PUT方法的补充,用来对已知资源进行局部更新。
OPTIONS:一般用于询问,比如在cors访问中,就先发送options请求。
DELETE
CONNECT:将连接改为管道方式的代理服务器。
TRACE:回显服务器收到的请求,一般用于测试,诊断。
在RESTful风格中,GET用于获取数据,POST创建数据,PUT用于更新数据,DELETE用于删除数据
6,跨域访问都有哪些?
JSONP:通过创建<script>标签的方式,并将返回的数据作为回调函数。这种方式只支持GET访问,特点就是限制少。
CORS:通过在服务器端设置响应头来允许跨域访问,能不能跨域,是服务端决定的。
代理服务器:通过代理服务器请求,然后把数据返回给客户端,对服务器端是无感的,需要配置服务器支持这种请求。
iframe嵌套:利用iframe的跨域通信特性,在不同iframe之间实现数据交换。
7,nginx怎么设置限流?
nginx限流就是限制用户请求速度,防止服务器宕机,是服务降级的一种自我保护机制,主要有三种:正常限制访问频率;突发限制访问频率;限制并发连接数。
正常限制访问频率:限制一个用户的请求频率,nginx中使用ngx_http_limit_req_module模块来限制用户访问频率。
例如:
//定义限流策略,根据($binary_remote_addr)ip限流,(test:10m)名称是test,共享空间是10M,每秒最多2个请求,如果超过就丢掉
limit_req_zone $binary_remote_addr zone=test:10m rate=2r/s;
server {
location / {
limit_req zone=test; //使用这个限流策略
}
}
突发限制访问频率:正常限制访问频率无法面对正常的突发访问增加的情况,无法处理突发流量,
例如:
//定义限流策略,根据($binary_remote_addr)ip限流,(test:10m)名称是test,共享空间是10M,每秒最多2个请求,如果超过就丢掉
limit_req_zone $binary_remote_addr zone=test:10m rate=2r/s;
server {
location / {
limit_req zone=test burst=10 nodelay; //使用这个限流策略
//上面的策略是每秒最多处理2个请求,加入同时来了20个请求,把剩下的放入队列中,队列最多放10个,如果队列满了,就丢弃
}
}
限制并发连接数:nginx 的 ngx_http_limit_conn_module 模块提供限制连接数的能力,例如:
//现定义策略的名称perip,共享空间10M
limit_conn_zone $binary_remote_addr zone=perip:10m;
server {
location ~* \.(html)$ {
limit_conn perip 10; //使用这个策略,设置最大连接数10,如果某个IP同时连接数不能超过10
}
}
8,tcp和udp区别
tcp是面向连接的传输协议,传输前需要先建立连接;udp不需要连接,即刻传输协议。
tcp是可靠的,无差错,重发等;udp无法保证可靠,但是传输高效。
tcp有拥塞,流量控制机制,保证数据的传输安全;udp不会考虑网络和流量情况。
tcp协议头长,会占用资源多些;udp协议头短,传输效率高。
tcp是数据流,没有边界,通过序列号保证顺序和确认机制保证可靠;upd有边界,不能保证顺序,没有确认机制。
tcp的特点可靠,保证发送的和最后接收到的数据完全一样;udp特点就是快速,发送端只管发送,至于接收端是否丢包,接收数据顺序是否一样不关心,比如直播一般是udp。
------------------------------------------推荐阅读----------------------------------------------------------------