前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从0到1学习Nginx(二)

从0到1学习Nginx(二)

作者头像
我是胖虎啊
发布2022-06-27 18:05:28
2310
发布2022-06-27 18:05:28
举报
文章被收录于专栏:测试开发卷货

上篇回顾 + 本篇知识点

「上一篇知识点」

  • 如何下载,部署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的分享

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试开发卷货 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 上篇回顾 + 本篇知识点
  • 实际演示示例(2个)
    • 「负载均衡的操作示例」
      • 动静分离示例
      相关产品与服务
      负载均衡
      负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档