栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

阶段二第一部分:第2章 Nginx进阶与实战

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

阶段二第一部分:第2章 Nginx进阶与实战

文章目录
  • 2-0 在Nginx中解决跨域问题
    • 跨域问题
    • CROS跨域资源共享
    • axios测试跨域
    • 解决跨域问题
      • SpringBoot配置
      • Nginx跨域配置支持
  • 2-1 在Nginx中配置静态资源防盗链
  • 2-2 Nginx的模块化设计解析
    • Nginx模块
  • Nginx安装包说明
  • 2-3 Nginx的集群负载均衡解析
    • 单节点
    • 集群
    • 集群与负载均衡
  • 2-7 四层、七层与DNS负载均衡
    • 四层负载均衡
    • 七层负载均衡
    • 四层与七层负载均衡对比
    • DNS地域负载均衡
  • 2-7附:OSI网络模型

2-0 在Nginx中解决跨域问题 跨域问题

跨域问题的本质:两个站点域名不一样,就会出现跨域问题。所以跨域问题的本质是域名不同。
跨域问题的出现是出于安全问题,浏览器拒绝跨站点的访问,从而限制ajax从一个站点向另一个站点请求或访问资源,W3C标准规范

CROS跨域资源共享

CROS:全称Cross-Origin Resource Sharing,允许浏览器向跨Origin的服务器发起js请求获取响应。
解决跨域的常用形式:Jsonp、StringBoot Cors、Nginx。

axios测试跨域



    
    
    
    Document


    
    


解决跨域问题 SpringBoot配置
@Configuration
public class CorsConfig {
    public CorsConfig(){
    }

    @Bean
    public CorsFilter corsFilter(){
        // 1.添加cros配置信息
        CorsConfiguration config = new CorsConfiguration();
        // tomcat部署前端项目url
        config.addAllowedOrigin("http://192.168.168.11:8080");
        // nginx部署前端项目url
        config.addAllowedOrigin("http://192.168.168.11:90");
        config.addAllowedOrigin("http://192.168.168.11:89");
        // 放行所有站点
        config.addAllowedOrigin("*");

        // 设置是否发送coolie信息
        config.setAllowCredentials(true);
        // 设置允许的请求方式
        config.addAllowedMethod("*");
        // 设置允许的header
        config.addAllowedHeader("*");
        // 2.为url添加映射路径
        UrlBasedCorsConfigurationSource corsSource = new UrlBasedCorsConfigurationSource();
        corsSource.registerCorsConfiguration("/**", config);
        // 3.返回重新定义好的corsSource
        return new CorsFilter(corsSource);
    }
}
Nginx跨域配置支持

修改imooc.conf,在相关server模块添加如下配置:

#允许跨域请求的域,*代表所有
add_header 'Access-Control-Allow-Origin' *;
#允许带上cookie请求
add_header 'Access-Control-Allow-Credentials' 'true';
#允许请求的方法,比如 GET/POST/PUT/DELETE
add_header 'Access-Control-Allow-Methods' *;
#允许请求的header
add_header 'Access-Control-Allow-Headers' *;

2-1 在Nginx中配置静态资源防盗链

网站的图片、视频等资源如果不想被其他网站引用,可加入防盗链功能,加入后则只能自己域名访问,其他域名一概不能访问.

# 对源站点验证
valid_referers *.imooc.com; 
# 非法引入会进入下方判断
if ($invalid_referer) {
    return 404;
} 

2-2 Nginx的模块化设计解析 Nginx模块
  • nginx core:实现了一部分的底层通信协议,为其他模块、nginx进程等提供运行时的环境,可以看作JVM。

  • event module:事件模块 (linux默认的事件机制:epoll,是操作系统层面的事件处理机制)。

  • phase handler:处理客户端请求以及相应内容的响应

  • output filter:过滤器,会过滤一部分的内容,把内容再返回到浏览器,再去做响应。例如gzip,压缩的过程就是过滤的过程。

  • upstream:反向代理模块,会把真正的请求转发到真实的服务器,去响应真实的内容。

  • load balancer:负载均衡,实现集群、负载均衡的一些配置。

  • extend module:继承模块,相当于第三方模块 。

Nginx安装包说明
  • auto 自动:nginx会自动检测识别操作系统和编译脚本
  • CHANGES:历史版本号,包含nginx的一些历史版本信息
  • CHANGES.ru:俄罗斯版本
  • conf 配置 :默认存放的配置文件,安装完毕后会将 安装包conf 目录中的文件 拷贝到安装目录中
  • configure:做编译配置
  • contrib:提供相应工具
  • html:默认存放的一些静态文件,安装完毕后会将 安装包html 目录中的文件 拷贝到安装目录中
  • LICENSE:说明,协议说明等
  • Makefile:编译make之后生成的文件
  • man:nginx守则
  • objs:整合第三方插件,安装完毕后会放在objs下方
  • README:
  • src:nginx源码
    • core:核心源码
    • event:事件处理的一些机制,封装了相应的方法、模块;
    • http:upstream 反向代理;upstream_round_robin 负载均衡
    • mail:nginx可以作为一个邮件的代理服务器去收发邮件的
    • misc:辅助的功能、辅助的代码
    • os:操作系统 和系统级别的封装在这里
    • stream:流 包含upstream反向代理流


CHANGES文件:
conf目录:
html目录:

2-3 Nginx的集群负载均衡解析 单节点
很累---> 压力大
生病---> 服务器瘫痪
虽说单节点处理,按正常理论上来说,请求多少都会处理完,,但是会有瓶颈,多节点就是为了解决瓶颈问题       

集群

优点:整体性能高、效率高
缺点:成本提高
原则:1 + 1 > 2

集群与负载均衡

Nginx的作用:网关、反向代理器、负载均衡器
upstream:所有的tomcat服务器,代表上游服务器。
注意:用户的所有请求都会有可能到达集群中其它任意一个tomcat节点,这就涉及到nginx的负载均衡。
负载均衡:把用户的所有请求平均的分配的其他后台的所有tomcat节点,当然也可以根据每一个后台服务器本身能承载的并发量大小,去根据它的权重去配置,也可以根据url地址到达某些特定的tomcat里。
当Tomcat1服务器挂了,由于它在这个集群环境中,虽然之前的请求访问了Tomcat1,当它挂了后,以后请求不会再去访问Tomcat1,而是向其他服务器去请求。

2-7 四层、七层与DNS负载均衡

负载均衡的作用:

  • 能够为企业网络设备或者服务器带来更好的服务,提高吞吐量、提升并发性能、增强服务器的处理能力。
  • 可以提高服务器计算能力,使得我们的网络设备更加灵活。
  • 当有大量的并发请求来到服务器的时候,能够把这些请求分配到多台计算机节点上,让更多的节点来处理请求和响应,如此就可以大大缩减用户请求的等待时间。
四层负载均衡

四层负载均衡是基于IP + 端口的负载均衡。
原理是通过转发请求到后台的服务器,它只负责转发并且会记录当前连接是由哪个服务器处理的,后续这个连接的请求就会由同一台服务器去处理,其实相当于长连接,这个长连接一旦打开就会一直处理连接的状态,它的性能就会非常高。
四层是基于传输层的,主要基于 TCP和UDP。

1.F5硬负载均衡

  • 基于硬件的硬负载均衡,功能强,性能高,稳定性好
  • 商业级别的负载均衡,很贵,因为是基于硬件的

2.LVS四层负载均衡

  • 是Linux内核的四层负载,和协议无关,主要负责转发一些请求的,是基于CS端的

3.Haproxy四层负载均衡

  • 支持转发功能,灵活性非常高,除了四层以外也能够做七层的负载均衡

4.Nginx 四层负载均衡

  • 新版本里也能够做四层负载均衡,一般还是做七层负载均衡,以七层为主,主要是基于HTTP的一个负载均衡
  • 在nginx1.9版本后,新增了一个基于stream的四层负载均衡,可以用于实现四层协议的转发、代理等等
七层负载均衡

七层负载均衡是基于URL或IP的负载均衡,是基于应用层的,是针对于HTTP协议的一个负载均衡。

1.Nginx七层负载均衡:

  • 对http协议或邮箱协议做负载均衡,性能强劲

2.Haproxy七层负载均衡:

  • 灵活性很高

3.apache七层负载均衡:

  • 性能远不如nginx高,当并发达到百万级别后性能会越来越差
四层与七层负载均衡对比

四层

  • 一般会使用LVS;
  • 四层负载均衡主要适用于处理基于tcp、udp协议的负载均衡;
  • 四层是用于转发请求,而不是处理请求,它可以把用户请求转发给其他应用去处理。
    举例:黄牛不会处理用户诉求,只会把票卖你,比如想买第一排的票,但是他没有,你爱买不买,买了后也需要自己去找座位。

七层

  • 主要使用Nginx。
  • 七层一般用于处理http协议的,适用于web服务器,比如tomcat、apache、nginx;
  • 七层是会处理请求的,比如Nginx可以去处理(压缩或者缓存)静态资源等内容。
    举例:售票处可以根据用户需求处理, 会提供一些相应服务。
DNS地域负载均衡

客户端与DNS服务器交互,从DNS服务器获取当前的某一个IP,通过域名解析到的IP(是后端某个服务器的公网IP),DNS会根据客户端所在地域去进行反馈,采取请求的就近原则访问最近的服务器。

优点:所有的负载均衡工作交由DNS服务器去处理,根据IP地址采用就近原则访问最近的服务器,提高用户的访问速度。

2-7附:OSI网络模型

网络模型就是OSI(Open System Interconnect),意思为开放网络互联,是由国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)共同出版的,他是一种网络互联模型,也是一种规范。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/914814.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号