Nginx具体应用

部署静态资源

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

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;
        }
    }
}

正向/反向代理

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

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

在这里插入图片描述

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

负载均衡

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

在这里插入图片描述

负载均衡的规则

名称 说明
轮询(默认方式) 每个请求按时间顺序逐一分配不同后端服务器,如果后端服务器挂掉能自动剔除
weight 权重方式(权重默认为 1,权重越高请求分发机率越高)
ip_hash 每个请求按访问iphash结果分配,这样每个访客固定访问一个后端服务器(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;
}
# 访问iphash果实现负载均衡
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端口

一步: 在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动静分离不能理解成只是单纯的把动态页面和静态页面物理分离,严格意义上说应该是把动态请求跟静态请求分开

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

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

在这里插入图片描述

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

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

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主页面中

在这里插入图片描述

一步: 在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

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; 
        }
    }
}

配置高可用

原文地址:https://blog.csdn.net/qq_57005976/article/details/133156845

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_48420.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注