nginx学习总结

nginx学习

1、代理的概念

  • 1、正向代理
    我们常说的代理也就是只正向代理,正向代理的过程,它隐藏了真实的请求客户端,服务端不知道真实的客户端是谁,客户端请求的服务都被代理服务器代替来请求,以一个例子说明:如果从网络的方向来讲,有三个概念,客户端、服务器、中间代理,对应于现实生活中的贷款者、银行、存款者,也就是说存款者并不知道是哪位贷款者借走了他的钱,而是通过银行代理了请求。
  • 2、反相代理
    反向代理隐藏了真实的服务端,银行也包含反相代理,也就是说贷款者也不知道他借的钱是谁的。另一个例子就是我们打110,我们只管打出110号码就行,最终会得到服务,而我们打出110之后并不知道具体会是哪位警官去接电话,110报警中心肯定会有很多的接听员,我们只知道会有服务,并不清楚到底会是哪位给我们服务。
    两者的区别在于代理的对象不一样: 正向代理是为客户端代理,反向代理是为服务端代理。

2、nginx介绍

Nginx是一款高性能的Web服务器软件,主要用于提供网上信息浏览服务,为高并发网站的应用场景而设计,可以在Linux、macOS和Windows等操作系统中运行,它的优点包括性能高、稳定性好、结构模块化、配置简单以及资源消耗非常低等。拥有HTTPS访问、gzip压缩、虚拟主机和URL重写等功能,不但可以搭配FastCGI程序处理动态请求,还可以用于代理、反向代理、负载均衡和缓存服务器等功能。

3、nginx的功能

  • 1、负载均衡
    负载均衡(load balance)就是将负载分摊到多个操作单元上执行,从而提高服务的可用性和响应速度,带给用户更好的体验。(负载均衡的功能好像银行似乎也有这个功能,银行的功能很强大吗!)
    目前负载均衡有4种典型的配置方式,分别为轮询、权重、ip_hash和利用第三方模块的方式。

    //默认轮询配置方式:
    upstream myapp {
        server 192.168.20.1:8080; # 应用服务器1
        server 192.168.20.2:8080; # 应用服务器2
    }
    server {
        listen 80;
        location / {
            proxy_pass http://myapp;
        }
    }
    
    
    //ip_hash方式
    upstream myapp {
        ip_hash; # 根据客户端IP地址Hash值将请求分配给固定的一个服务器处理
        server 192.168.20.1:8080;
        server 192.168.20.2:8080; 
      } 
      server {
        listen 80;
        location / {
          proxy_pass http://myapp;
        } 
      }
    
    //权重方式
    upstream myapp { 
        server 192.168.20.1:8080 weight=3; # 该服务器处理3/4请求
        server 192.168.20.2:8080; # weight默认为1,该服务器处理1/4请求
      } 
      server {
        listen 80;
        location / {
          proxy_pass http://myapp;
        } 
      }
    
配置方式 说明
轮询 均衡负载默认的配置方式,每个请求按照时间顺序逐一分配到不同的后端服务器进行处理,如果服务器有宕机会自动剔除
权重 利用weight指定轮训的权重比率,与访问率成正比,用于后端服务器使用不均的情况下
ip_hash 每个请求按照冯文的的ip的hash结果分配,这样可以使同一ip的访客固定访问同一个后端服务器,可以解决session共享的问题
第三方模块 第三方模块采用fair时,按照每台服务器的响应时间来分配请求,相应时间短的优先分配,若第三方模块采用URL_hsah时,按照url的hash值来分配请求。
  • 2、Web缓存方式
    利用反向代理服务器对访问频率较多的内容进行缓存,有利于节省后端服务器的资源。Nginx提供了两种Web缓存方式:永久性缓存和临时性缓存。
    永久性缓存:将内容源服务器响应的内容缓存到本地,若不手动删除,该缓存文件会一直生效。
    临时性缓存:采用md5算法将请求连接进行哈希后,根据具体配置生成缓存文件目录,保存响应的数据。
    Web缓存服务器位于内容源Web服务器和客户端之间,当客户端用户访问一个URL时,Web缓存服务器就会请求相应的内容源Web服务器,并将响应的信息缓存至内存或磁盘;然后,当下一个请求到来时,如果访问的是相同URL,Web缓存服务器会直接将已缓存的内容输出给客户端,而不用再次向内容源Web服务器发送请求。

  • 2、静态HTTP服务器
    首先,Nginx是一个HTTP服务器,可以将服务器上的静态文件(如HTML、图片)通过HTTP协议展现给客户端。配置:

     server {
        listen 80; # 端口号
        location /doc/{ #映射地址
            root /usr/; # 静态文件路径为/usr/doc/
         autoindex on;
        } 
    } 
    
  • 3、反向代理
    客户端本来可以直接通过HTTP协议访问某网站应用服务器,网站管理员可以在中间加上一个Nginx,客户端请求Nginx,Nginx请求应用服务器,然后将结果返回给客户端,此时Nginx就是反向代理服务器。
    配置:

    server {
        listen 80;
        location / {
            proxy_pass http://192.168.20.1:8080; # 应用服务器HTTP地址
     }
    }
    
  • 4、虚拟主机
    有的网站访问量大,需要负载均衡。然而并不是所有网站都如此出色,有的网站,由于访问量太小,需要节省成本,将多个网站部署在同一台服务器上。
    例如将www.aaa.comwww.bbb.com两个网站部署在同一台服务器上,两个域名解析到同一个IP地址,但是用户通过两个域名却可以打开两个完全不同的网站,互相不影响,就像访问两个服务器一样,所以叫两个虚拟主机。

      server {
        listen 80 default_server;
        server_name _;
        return 444; # 过滤其他域名的请求,返回444状态码
      }
      server {
        listen 80; 
        server_name www.aaa.com; # www.aaa.com域名
        location / {
          proxy_pass http://localhost:8080; # 对应端口号8080
        }
      }
      server {
        listen 80; 
        server_name www.bbb.com; # www.bbb.com域名
        location / { 
          proxy_pass http://localhost:8081; # 对应端口号8081
        }
      }
    

    在服务器8080和8081分别开了一个应用,客户端通过不同的域名访问,根据server_name可以反向代理到对应的应用服务器。

    虚拟主机的原理是通过HTTP请求头中的Host是否匹配server_name来实现的,有兴趣的同学可以研究一下HTTP协议。

    另外,server_name配置还可以过滤有人恶意将某些域名指向你的主机服务器。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,084评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,623评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,450评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,322评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,370评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,274评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,126评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,980评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,414评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,599评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,773评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,470评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,080评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,713评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,852评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,865评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,689评论 2 354

推荐阅读更多精彩内容