大家好,又见面了,我是你们的朋友全栈君。
什么是DNS解析域名
DNS域名解析就是讲域名转化为不需要显示端口(二级域名的端口一般为80)的IP地址,域名解析的一般先去本地环境的host文件读取配置,解析成对应的IP地址,根据IP地址访问对应的服务器。若host文件未配置,则会去网络运营商获取对应的IP地址和域名.
什么是Nginx
Nginx是一个高级的轻量级的web服务器,由俄罗斯科学家开发的,具有如下优点:
1.占用内存少,并发量强,支持多种并发连接,效率高.
2.能够作为负载均衡服务器和(内部直接支持 Rails 和 PHP)代理服务器。Nginx用C编写开销和CPU占有小.
3.安装启动简单,配置简洁,bug少,一般几个月不需要重新启动且不会宕机,稳定性和安全性好.
Nginx的作用
反向代理、负载均衡、配置主备tomcat、动静分离
Nginx 应用场景
做HTTP服务器、反向代理服务器、静态资源服务器
什么是反向代理
代替真实服务器接收网络请求,然后将请求转发到真实服务器
反向代理的作用
隐藏真实服务器,使真实服务器只能通过内网访问,保护了真实服务器不被攻击。配置负载均衡,减轻单台真实服务器的压力。配置主备服务器,保持服务稳定运行。
Nginx如何配置反向代理
首先到DNS服务器做域名解析,如果是局域网在hosts文件中配置IP和域名对应关系。编辑nginx的nginx.conf文件,配置server_name为指向nginx服务器的域名,location拦截请求,如果是访问nginx本地资源则配置root,如果是反向代理到真实服务器则配置proxy_pass为服务器地址
说说常用Nginx的相关配置
upstream 负载均衡配置
server [IP] [weight] [backup] 配置tomcat集群
proxy_connect_timeout、proxy_read_timeout、proxy_send_timeout 连接时间、真实服务器响应时间、返回结果时间
location 匹配用户请求的url
root 配置本地资源路径
proxy_pass 配置真实服务器地址
请画图展示反向代理流程
LVS与Nginx区别
LVS是四层反向代理,基于TCP和UDP协议,可用于管理Nginx集群,抗负载能力强。Nginx是七层反向代理,基于HTTP协议,用于管理真实服务器集群。
location的作用
匹配用户请求url,根据不同请求转发到不同的服务器。
Nginx中如何配置负载均衡
在upstream中配置多个server,在location的proxy_pass配置为http:// upstream名称
四层负载均衡与七层负载均衡区别
四层负载均衡基于TCP和UDP协议,通过IP 端口号接受请求并转发到服务器。七层负载均衡基于HTTP协议,通过url或主机名接收请求并转发到服务器。
四层负载均衡有那些实现方案
LVS、F5
负载均衡有那些算法
轮询算法:按照时间顺序分配到不同的服务器,当其中一台服务器宕机则被自动剔除,切换到正常的服务器。
权重算法:按照分配给服务器的权重比例来分发到不同服务器,权重比例越高,则访问几率越大。
IP绑定(ip_hash):根据访问的IP的哈希结果来判定,使同一个IP访问一台固定的后端服务器,同时解决动态页面的session问题.
服务器分布式后,会产生了那些问题
分布式锁
分布式全局ID
分布式Session一致性问题
分布式事务
分布式任务调度
分布式日志收集
分布式配置中心
什么是动态负载均衡
一般情况下,使用nginx搭建服务器集群,每次修改nginx.conf配置文件都需要重启nginx服务器。动态负载均衡就是修改nginx.conf配置文件后不必重启nginx而使配置生效。
Nginx如何实现动态负载均衡
搭建Nginx Consul Upsycn环境。Nginx实现服务的反向代理和负载均衡。Consul是一个开源的注册中心和服务发现的框架,通过HTTP API来发现服务,注册服务。同时支持故障发现,K/V存储,多数据中心,Raft算法等多种高可用特性。Consul在Nginx动态负载均衡作用是通过Http api注册和发现服务.Upsycn是新浪微博的开源框架,在Nginx动态负载均衡的作用是Consul的后端的server列表,即获取Nginx的上游服务器(Upstream server)信息,并动态更新Nginx的路由信息.
什么是Http协议
超文本传输协议
Http协议组成部分
Http协议是基于TCP协议封装成超文本传输协议,包括请求(request)和响应(response),http协议请求(request)分为请求参数(request params)和方法类型(request method)、请求头(request hearder)、请求体(request body) ,
响应(response)分为 响应状态(response state)、响应头(response header)、响应体(response body)等.
TCP与UDP区别
udp:
a、是面向无连接, 将数据及源的封装成数据包中,不需要建立连接
b、每个数据报的大小在限制64k内
c、因无连接,是不可靠协议
d、不需要建立连接,速度快
tcp:
a、建议连接,形成传输数据的通道.
b、在连接中进行大数据量传输,以字节流方式
c 通过三次握手完成连接,是可靠协议
d 必须建立连接m效率会稍低
谈谈七层网络模型
应用层:客户端的各种应用、app;
表示层:进行数据的格式区分,如图片、编码;
会话层:本地主机与远程主机的会话管理;
传输层:定义传输数据的协议端口号,TCP和UDP是这一层的协议;
网络层:进行逻辑地址寻址;
数据链路层:建立逻辑连接,进行硬件地址寻址;
物理层:建立物理连接;
Nginx如何实现TCP四层负载均衡
在nginx.conf文件中配置tcp模块,在upstream块中定义socket服务器负载均衡,其余与nginx配置七层负载均衡相同。
tcp {
### 定义多个上游服务器
upstream itmayeidu{
### 定义TCP模块上游服务器
server 192.168.5.165:80001;
server 192.168.5.165:80002;
}
server {
listen 9999;
server_name 192.168.212.137;
### 反向代理upstream
proxy_pass itmayeidu;
}
}
lvs 与Nginx 区别
lvs工作在网络第四层,nginx工作在网络第七层;lvs比nginx抗负载能力强;lvs对网络依赖性强,nginx对网络依赖性弱;lvs几乎可以对所有应用做负载均衡,比如数据库。
lvs与keepalived区别
Lvs可以实现负载均衡,但是无法实现健康检查。Keepalived可以进行健康检查实现高可用。
keepalived 作用
keepalive 软件可以进行健康检查,而且能同时实现 LVS 的高可用性,解决 LVS 单点故障的问题
如何实现双机主从热备
Nginx Tomcat:在upstream中配置多台服务器,从服务器后加backup
Keepalived Nginx:在多台nginx服务器上安装keepalived,将主服务器的state设置为MASTER,从服务器设置为BACKUP,主服务器的优先级要高于从服务器
lvs Keepalived Nginx架构流程图
项目发布如何不影响到正常用户访问,实现7*24小时访问
可以两台机子互为热备,平时各自负责各自的服务。在做上线更新的时候,关闭一台服务器的tomcat后,nginx自动把流量切换到另外一台服务的后备机子上,从而实现无痛更新,保持服务的持续性,提高服务的可靠性,从而保证服务器7*24小时运行。
项目如何发生故障宕机了,如何处理。
使用lvs keepalived Nginx做主从热备,lvs管理nginx集群,nginx管理服务器集群,在服务器宕机的情况下keepalived启动健康检测,多次重启无果可以短信通知运维人员及时维护。
动态网站与静态网站区别
在浏览器中打开一个网站,点击鼠标右键查看源码,多次请求后如果源码不产生变化就是静态网站,变化就是动态网站。
动态页面静态化的作用
便于搜索引擎抓取和排名
什么是动静分离架构模式
静态页面与动态页面分开不同系统访问的架构设计方法,静态页面与动态页面以不同域名区分。
如何搭建动静分离
以nginx服务器作为静态资源服务器,静态资源和动态资源访问分开配置,静态资源在location中使用本地文件路径配置方式,动态资源使用proxy_pass配置到后台服务器。
如:
###静态资源访问
server {
listen 80;
server_name static.itmayiedu.com;
location /static/imgs {
root F:/;
index index.html index.htm;
}
}
###动态资源访问
server {
listen 80;
server_name www.itmayiedu.com;
location / {
proxy_pass http://127.0.0.1:8080;
index index.html index.htm;
}
}
动静分离与前后分离区别
动静分离是将静态资源和动态资源存放在不同服务器中,前后分离是将前端和后台分离,前端通过api调用后台接口
如何控制浏览器静态资源缓存
静态资源存在缓存的原因是项目上线时,浏览器缓存中的静态资源导致与服务器将淘汰资源的代码发生冲突(或者是页面访问频繁访问同一资源,导致一些浏览器如IE(本人开发亲身经历过)返回默认的响应结果,与实际响应结果不符合),一般的服务器是强制F5进行刷新或者是清除缓存,最有效的解决方法就是在请求资源后面加上变量(如时间戳,随机数)
Http状态码304的作用
表示浏览器存在静态资源缓存就不从服务器获取静态资源
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/143078.html原文链接:https://javaforall.cn