从0到1学习Nginx(二)

2022-06-27 18:05:28 浏览数 (1)

上篇回顾 本篇知识点

「上一篇知识点」

  • 如何下载,部署nginx
  • 正向代理 和 反向代理基本概念
  • nginx的基本使用命令
  • tomcat的部署和使用 vim的查找技巧
  • 2个关于nginx的实际使用示例

「本篇知识点」

  • 负载均衡
  • 动静分离部署

实际演示示例(2个)

「负载均衡的操作示例」

目的是: 前端访问一个url, nginx自动将请求分发到不同的服务上,实现负载均衡.

上一篇文章中,我们成功启动了2个tomcat,分别占用的是8090和8091端口,这次我们继续使用这两个tomcat服务做示例

  1. 分别在8090, 8091服务的webapps 创建balance目录, 然后分别在各自的balance目录里面创建b.html, 内容如下(区别只是端口号的数字不一样)
代码语言:javascript复制
<h1>balance-8090</h1>
代码语言:javascript复制
<h1>balance-8091</h1>

文件创建完成后,自己简单测试一下2个页面能否正常访问,测试地址:

http://yourip:8090/balance/b.html http://yourip:8091/balance/b.html

  1. nginx上的配置
  • 打开nginx.conf文件,首先在http模块下,新增如下配置, 「注意yourip是nginx所在服务器的实际ip」 咱们给这个配置命名为「myserver」,后面要用到!
代码语言:javascript复制
upstream myserver {
        server yourip:8090;
        server yourip:8091;
                  }
  • 自己新建一个server模块,内容如下
代码语言:javascript复制
    server {
        listen       9002;

        server_name  yourip;

        location ~ /balance/ {
            proxy_pass http://myserver;
        }

    }

  • 重启nginx服务, 命令为 ./nginx -s reload
  1. 测试效果: 浏览器访问 http://yourip:9002/balance/b.html, 多次刷新页面,就可以看到效果了 效果是: 虽然访问的url固定,但是每次刷新,页面都会发生变化,「balance-8090」「balance-8091」 页面是轮询交替出现的 也可以通过后台查看nginx or tomcat日志来查看,验证请求时交替的访问这两个tomcat服务的
  2. 「nginx关于负载均衡的策略」上面演示的是负载均衡的策略之一: 轮询,其实nginx有4种负载均衡策略的
  • 「轮询」 每个请求按时间顺序逐一分配到不同的后端服务器中,如果后端服务器down掉,能自动剔除
代码语言:javascript复制
upstream myserver {
  server yourip:8090;
  server yourip:8091;
}
  • 「ip_hash」每个请求按访问ip的hash结果分配, 使每个访客固定访问一个后端服务器,解决session的问题
代码语言:javascript复制
upstream myserver {
ip_hash;
       server yourip:8090;
       server yourip:8091;
}
  • 「权重策略」 weight代表权重, 权重默认为1,权重越高,被分配的客户端越多 指定轮询几率,weight和访问率成正比,用于后端服务器性能不均的情况
代码语言:javascript复制
upstream myserver {
  server yourip:8090 weight=1;
  server yourip:8091 weight=10;
}
  • 「fair策略」 按后端服务器的响应时间来分配请求,响应时间短的优先分配
代码语言:javascript复制
upstream myserver {
      fair;
     server yourip:8090;
     server yourip:8091;
}

动静分离示例

接下来讲的是如何配置nginx, 使外部可以通过nginx访问到自己配置的静态资源~

比如我们想访问一张哆啦A梦的图片,该怎么操作呢?

  1. 首先在linux上创建一个目录, 我当前是在 /data目录里面创建了image目录,放入我们的图片,命名为cartoon.jpeg, 即当前的图片路径为/data/image/cartoon.jpeg
  2. 配置nginx,先打开nginx.conf,由于我们一直都是用这一个nginx,避免和以前的冲突 所以最好新建一个server块.
代码语言:javascript复制
    # 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的分享

0 人点赞