上篇回顾 本篇知识点
「上一篇知识点」
- 如何下载,部署nginx
- 正向代理 和 反向代理基本概念
- nginx的基本使用命令
- tomcat的部署和使用 vim的查找技巧
- 2个关于nginx的实际使用示例
「本篇知识点」
- 负载均衡
- 动静分离部署
实际演示示例(2个)
「负载均衡的操作示例」
目的是: 前端访问一个url, nginx自动将请求分发到不同的服务上,实现负载均衡.
上一篇文章中,我们成功启动了2个tomcat,分别占用的是8090和8091端口,这次我们继续使用这两个tomcat服务做示例
- 分别在8090, 8091服务的webapps 创建balance目录, 然后分别在各自的balance目录里面创建b.html, 内容如下(区别只是端口号的数字不一样)
<h1>balance-8090</h1>
代码语言:javascript复制<h1>balance-8091</h1>
文件创建完成后,自己简单测试一下2个页面能否正常访问,测试地址:
http://yourip:8090/balance/b.html http://yourip:8091/balance/b.html
- nginx上的配置
- 打开nginx.conf文件,首先在http模块下,新增如下配置, 「注意yourip是nginx所在服务器的实际ip」 咱们给这个配置命名为「myserver」,后面要用到!
upstream myserver {
server yourip:8090;
server yourip:8091;
}
- 自己新建一个server模块,内容如下
server {
listen 9002;
server_name yourip;
location ~ /balance/ {
proxy_pass http://myserver;
}
}
- 重启nginx服务, 命令为 ./nginx -s reload
- 测试效果: 浏览器访问 http://yourip:9002/balance/b.html, 多次刷新页面,就可以看到效果了 效果是: 虽然访问的url固定,但是每次刷新,页面都会发生变化,「balance-8090」 和 「balance-8091」 页面是轮询交替出现的 也可以通过后台查看nginx or tomcat日志来查看,验证请求时交替的访问这两个tomcat服务的
- 「nginx关于负载均衡的策略」上面演示的是负载均衡的策略之一: 轮询,其实nginx有4种负载均衡策略的
- 「轮询」 每个请求按时间顺序逐一分配到不同的后端服务器中,如果后端服务器down掉,能自动剔除
upstream myserver {
server yourip:8090;
server yourip:8091;
}
- 「ip_hash」每个请求按访问ip的hash结果分配, 使每个访客固定访问一个后端服务器,解决session的问题
upstream myserver {
ip_hash;
server yourip:8090;
server yourip:8091;
}
- 「权重策略」 weight代表权重, 权重默认为1,权重越高,被分配的客户端越多 指定轮询几率,weight和访问率成正比,用于后端服务器性能不均的情况
upstream myserver {
server yourip:8090 weight=1;
server yourip:8091 weight=10;
}
- 「fair策略」 按后端服务器的响应时间来分配请求,响应时间短的优先分配
upstream myserver {
fair;
server yourip:8090;
server yourip:8091;
}
动静分离示例
接下来讲的是如何配置nginx, 使外部可以通过nginx访问到自己配置的静态资源~
比如我们想访问一张哆啦A梦的图片,该怎么操作呢?
- 首先在linux上创建一个目录, 我当前是在 /data目录里面创建了image目录,放入我们的图片,命名为cartoon.jpeg, 即当前的图片路径为/data/image/cartoon.jpeg
- 配置nginx,先打开nginx.conf,由于我们一直都是用这一个nginx,避免和以前的冲突 所以最好新建一个server块.
# img
server {
listen 100;
server_name yourip;
location /img/ {
root /data/;
}
}
然后重启服务, ./nginx -s reload 3.测试一下, 浏览器访问: yourip:100/image/cartoon.jpeg,即可查看我们配置的哆啦A梦图片了
这里说下nginx识别路径的大致原理,nginx先根据请求的port找到对应的server,然后由上至下依次匹配路径,如果和location中配置的路径相匹配, 那么nginx就会自动从 「root中配置的path location配置的path 资源名称」 这样的路径从服务器上找对应资源,找到则返回资源,未找到则返回404!
同理可得,我们也可以找一个视频文件如a.mp4,按照我们配置图片这样的配置一下,那么浏览器或者播放器就可以「播放视频」了.或者以此为原理做一个「小型视频网站」,理论上也是可行的~
再介绍一个关于「nginx访问文件的小技巧」 浏览器可以直接访问服务器的指定目录,来访问资源, 效果图如下:
nginx的配置如下:
代码语言:javascript复制 # resource
server {
listen 101;
server_name yourip;
location /image/ {
root /data/;
autoindex on;
}
}
以上就是今天关于nginx的分享