03Nginx的静态资源部署,反向代理,负载均衡,动静分离的配置

这篇具有很好参考价值的文章主要介绍了03Nginx的静态资源部署,反向代理,负载均衡,动静分离的配置。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Nginx具体应用

部署静态资源

Nginx相对于Tomcat处理静态资源的能力更加高效,所以在生产环境下一般都会将Nginx可以作为静态web服务器来部署静态资源

  • 静态资源: 在服务端真实存在并且能够直接展示的一些html页面、css文件、js文件、图片、视频等资源文件
  • 将静态资源部署到Nginx非常简单,只需要将静态资源文件放到到Nginx安装目录下的html目录中就可以正常访问
http {                                        
    include       mime.types;                    
    default_type  application/octet-stream;  
    sendfile        on;  
    keepalive_timeout  65;  
    server {
        # 监听80端口
        listen       80;       
        # 服务器的IP地址(域名)
        server_name  localhost; 
        # 处理80端口的location块,用来匹配客户端请求的url,匹配到后去根目录找对应的文件
        location / {
        	# 指定静态资源的根目录,默认当前目录是配置文件所在的conf目录,html目录和conf目录同级
            root   html;
            # 指定默认访问的首页(可以指定多个,中间用空格隔开,以";"结尾),默认当前目录是我们指定的根目录
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

正向/反向代理

正向代理: 为了从目标服务器取得内容, 客户端向代理服务器发送一个请求并指定目标服务器的地址,然后代理将请求转发给目标服务器并将获得的内容返回给客户端

  • 正向代理是给客户端设置代理服务器,客户端知道代理服务器的存在, 通过代理服务器转发请求最终访问到目标服务器
  • 正向代理的典型用途是为在防火墙内的局域网客户端提供访问Internet的途径即通过代理访问无法访问的资源

反向代理: 用户直接访问反向代理服务器就可以获得目标服务器的资源(用户不需要指定目标服务器的地址), 反向代理服务器负责将请求转发给目标服务器

  • 反向代理服务器也是位于用户与目标服务器之间,但却是给服务端设置代理服务器(用户不知道它的存在),用户以为自己访问的就是目标服务器

nginx代理静态资源,Nginx,负载均衡,nginx

正向代理和反向代理的区别

  • 正向代理隐藏的是用户: 原始服务器接收的是代理服务器的请求,用户知道可以通过代理服务器访问无法访问的资源(帮助客户端访问目标服务器)
  • 反向代理隐藏的是服务器: 用户以为自己访问的是目标服务器,其实自己访问的资源是通过反向代理服务器转发的(帮助目标服务器统一处理请求)

负载均衡

随着业务流量越来越大并且业务逻辑也越来越复杂, 单台服务器的性能及单点故障问题就凸显出来了, 因此需要多台服务器组成应用集群进行性能的水平扩展

  • 应用集群: 将同一应用部署到多台机器上组成应用集群,集群接收负载均衡器分发的请求进行业务处理并返回响应数据
  • 负载均衡器: 将用户请求根据对应的负载均衡算法分发到应用集群中的一台服务器进行处理,既保证服务的可用性又保证响应足够快
  • 注意: Nginx是在服务端实现负载均衡,在SpringCloud的客户端我们也可以实现负载均衡

nginx代理静态资源,Nginx,负载均衡,nginx

负载均衡的规则

名称 说明
轮询(默认方式) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器挂掉能自动剔除
weight 权重方式(权重默认为 1,权重越高请求分发机率越高)
ip_hash 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器(IP地址固定),可以解决session的问题
least_conn 依据最少连接方式,分发给处理连接少的服务器
url_hash 依据url分配方式,一个固定的url对应的服务器也是固定的
fair 按后端服务器的响应时间来分配请求,响应时间短的服务器优先分配请求
# 不指定默认采用轮询的方式实现负载均衡
upstream myserver{
        server 192.168.77.130:8080;
        server 192.168.77.130:8081;
}
# 采用权重的方式实现负载均衡
upstream myserver{
          server 192.168.77.130:8080 weight=10;
          server 192.168.77.130:8081 weight=5;
}
# 访问ip的hash结果实现负载均衡
upstream myserver{
            ip_hash;
            server 192.168.77.130:8080;
            server 192.168.77.130:8081;
 }
# 按后端服务器的响应时间实现负载均衡
upstream myserver{
             server 192.168.77.130:8080;
             server 192.168.77.130:8081;
             fair;
}

需求: 浏览器地址栏输入地址http://192.168.17.129/edu/a.html,根据负载均衡效果将请求平均分配到两台tomcat服务器的8080和8081端口中

  • 在服务器的两台tomcat里面webapps目录中创建web项目edu,在edu文件夹中创建页面a.html

第一步: 在http块中添加upstream指令定义一组服务器,新增一个server块采用负载均衡的规则将请求转发到集群中的某一台服务器

第二步: 访问http://192.168.77.130/edu/a.html发现结果在8080和8081两个服务之间切换

http {                                        
    include       mime.types;                    
    default_type  application/octet-stream;  
    sendfile        on;  
    keepalive_timeout  65;  
    # upstream指令可以定义一组服务器
    upstream targetServer{
    	# 默认使用轮询的方式实现负载均衡
        server 192.168.17.129:8080;
        server 192.168.17.129:8081;
    }
    server {
    	# 监听的端口
        listen       80;
        # nginx服务的地址
        server_name  localhost;
        location / {
        	# 添加定义的服务地址,使用定义好的targetServer
            proxy_pass http://targetServe 
        }
    }
}

动静分离

Nginx动静分离不能理解成只是单纯的把动态页面和静态页面物理分离,严格意义上说应该是把动态请求跟静态请求分开

动静分离从目前实现角度来讲大致分为两种

  • 第一种方案也是目前主流推崇的方案就是把静态文件独立成单独的域名然后放在独立的服务器上,如使用Nginx服务器处理静态页面,Tomcat服务器处理动态页面
  • 第二种方案就是把动态跟静态文件混合在一起发布,通过nginx来分开动态请求和静态请求,具体就是通过location指定不同的后缀名实现不同的请求转发

对于不经常变动的资源可以使用Expires参数给一个资源(请求)设定一个过期时间,这样浏览器每次访问的时候可以走缓存的数据,减少浏览器与服务器之前的请求

  • 用户在第一次访问服务器后浏览器中会将请求对应的资源进行缓存,下次访问的时候如果缓存的资源没有过期且服务端对应的资源也没有更新就直接走缓存
  • 满足则返回浏览器缓存的数据并返回状态码304,不满足则需要从服务器重新下载数据并返回状态码200

nginx代理静态资源,Nginx,负载均衡,nginx

第一步: 在liunx系统中/data目录下准备静态资源,如www/a.htmlimage/1.png

第二步: 在nginx的配置文件的location块配置要访问的静态资源路径

  • autoindex on: 在访问静态资源目录时,能够显示目录里面的内容
  • expire: 设置缓存过期时间
server {
    	# 监听的端口
        listen       80;
        # nginx的服务地址
        server_name  192.168.77.129;
        # http://192.168.77.129/www/a.html
        location /www/ {
        	root   /data/;
        	index  index.html index.htm;
        # http://192.168.77.129/image/
        location /image/ {
            root   /data/;
            # 显示image目录的内容
            autoindex on;
        }
}     

反向代理一台服务器

需求: 打开浏览器在浏览器地址栏输入地址www.123.com跳转到liunx系统中tomcat的主页面中

nginx代理静态资源,Nginx,负载均衡,nginx

第一步: 在windows系统的host文件进行域名和ip对应关系的配置

192.168.17.129 www.123.com

第二步: 在nginx.conf配置文件中添加proxy_pass属性进行请求转发的配置(反向代理配置)

http {                                        
    include       mime.types;                    
    default_type  application/octet-stream;  
    sendfile        on;  
    keepalive_timeout  65;  
    # 在http块中新增一个server块,用来将请求转发
    server {
        # 监听80端口
        listen       80;
        server_name  192.168.17.129;
        location / {
            # 反向代理配置,将请求转发到目标服务器
            proxy_pass http://127.0.0.1:8080; 
        }
    }
}

反向代理多台服务器

使用nginx反向代理(nginx监听端口为9001),根据访问的路径跳转到不同端口的服务中,注意放行8080/8081/9001对外访问的端口

第一步: 准备两个文件夹安装两个tomcat服务器,修改服务器的conf/erver.xml配置文件,修改它们的端口号防止冲突

<Server port ="8015" shutdown="SHYTDOWN" >
<Connector port="8080" protocol="HTTP/1.1">
<Connector port="8019" protocol="AJP/1.3">

第二步: 在两个Tomcat的webapps目录下分布创建web项目edu和vod并存放对应的测试文件a.html

<!--edu/a.html-->
<h1>8080<h1>
<!--vod/a.html-->
<h1>8081<h1>

第三步: 在http块中添加一个新的server块并添加两个location块文章来源地址https://www.toymoban.com/news/detail-764911.html

  • 访问http://192.168.17.129:9001/edu/a.html直接跳转到http://127.0.0.1:8080/edu/a.html
  • 访问http://192.168.17.129:9001/vod/a.html直接跳转到http://127.0.0.1:8080/vod/a.html
http {                                        
    include       mime.types;                    
    default_type  application/octet-stream;  
    sendfile        on;  
    keepalive_timeout  65;  
    # 在http块中新增一个server块,用来将请求转发
    server {
        # 监听9001端口
        listen       9001;
        server_name  192.168.17.129;
        location ~ /edu/ {
            # 反向代理配置,将请求转发到目标服务器
            proxy_pass http://127.0.0.1:8080; 
        }
        location ~ /vod/ {
            # 反向代理配置,将请求转发到目标服务器
            proxy_pass http://127.0.0.1:8081; 
        }
    }
}

配置高可用

到了这里,关于03Nginx的静态资源部署,反向代理,负载均衡,动静分离的配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • nginx反向代理 负载均衡

    目录 1.反向代理介绍:  2.七层代理和四层代理:   2.1 七层代理:   2.2 四层代理: 3.反向代理web服务器:   3.1 代理服务器配置: 3.2 服务器配置 : 3.3 客户端访问: 3.4 代理不同端口: 4.反向代理动静分离:   4.1  准备:   4.2 代理服务器配置:   4.3 动态服务器配置:

    2024年02月10日
    浏览(37)
  • nginx负载均衡+反向代理

    最近业务上遇到一个需求,其它系统因业务校验需要调用上级系统进行数据发送或校验,如果上级系统停机维护,其它下级系统发送的http通讯会丢失,还要一次次补发数据,耗费人工与时间。使用nginx+反向代理解决了部分需求。 目标:当服务A停机维护,其它系统会调用服务

    2024年02月08日
    浏览(35)
  • Nginx反向代理和负载均衡

    ` 正向代理 反向代理 七层反向代理: (基于http协议) http { upstream 服务器组名称 { server IP1:PORT [weight=1 …]; server IP2:PORT; … 调度算法(rr轮询/加权轮询,least_conn最小连接,ip_hash,url_hash,fair); } server { location ~ … { proxy_pass http://服务器组名称; proxy_set_header HosT $host; proxy_set_he

    2024年02月03日
    浏览(78)
  • Nginx反向代理与负载均衡

    代理是在服务器和客户端之间假设的一层服务器,代理将接收客户端的请求并将它转发给服务器,然后将服务端的响应转发给客户端。 不管是正向代理还是反向代理,实现的都是上面的功能。 正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从

    2023年04月26日
    浏览(36)
  • 06、Nginx反向代理与负载均衡

    反向代理 : 这种代理方式叫做,隧道代理。有性能瓶颈,因为所有的数据都经过Nginx,所以Nginx服务器的性能至关重要 负载均衡 : 把请求,按照一定算法规则,分配给多台业务服务器(即使其中一个坏了/维护升级,还有其他服务器可以继续提供服务) 反向代理+负载均衡:

    2024年02月12日
    浏览(40)
  • Nginx的反向代理和负载均衡

    Nginx作为面试中的大…小头目,自然是不能忽视的,而以下两点就是它能成为面试中头目的招牌。 反向代理和负载均衡 在此之前,我们先对Nginx做一个简单的了解 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。因它的稳定性、丰富的功能

    2024年02月08日
    浏览(40)
  • 【nginx实战】nginx正向代理、反向代理、由反向代理实现的负载均衡、故障转移详解

    本文将要讨论以下内容 正向代理与反向代理的基本概念 Nginx正向代理服务的配置指令、Nginx反向代理服务的配置指令 Nginx反向代理服务器的应用——负载均衡、故障转移 案例分析   正向代理的概念 局域网内的机器借助代理服务访问局域网外的网站,此代理服务器提供的服务

    2024年01月24日
    浏览(43)
  • Nginx【反向代理负载均衡动静分离】--下

    示意图 图解 一个master 管理多个worker ● 争抢机制示意图 图解 一个master Process 管理多个worker process, 也就是说Nginx 采用的是多进程结构, 而不是多线程结构. 当client 发出请求(任务)时,master Process 会通知管理的worker process worker process 开始争抢任务, 争抢到的worker process 会开启连

    2024年02月08日
    浏览(44)
  • Nginx【反向代理负载均衡动静分离】--上

    需求1: 访问不同微服务 示意图 需求2: 轮询访问服务 示意图 解决方案: Nginx 反向代理 负载均衡 动静分离 高可用集群 Nginx 在分布式微服务架构的位置 Nginx 是什么? 能干什么? 是什么:Nginx (“engine x”) 是一个高性能的HTTP 和反向代理WEB 服务器 能干什么:反向代理负载均衡动静

    2024年02月08日
    浏览(51)
  • Nginx【反向代理负载均衡动静分离】--中

    示意图 示意图 负载均衡就是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应足够快 linux 下有Nginx、LVS、Haproxy 等等服务可以提供负载均衡服务, Nginx 提供了几种分配方式(策略): 轮询(默认) ​ 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服

    2024年02月09日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包