赞
踩
部署静态资源
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 | 每个请求按访问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
端口中
项目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
来分开动态请求和静态请求,具体就是通过location指定不同的后缀名实现不同的请求转发对于不经常变动的资源可以使用Expires
参数给一个资源(请求)设定一个过期时间,这样浏览器每次访问的时候可以走缓存的数据,减少浏览器与服务器之前的请求
第一步: 在liunx系统中/data
目录下准备静态资源,如www/a.html
和image/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的主页面中
第一步: 在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; } } }
配置高可用
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。