关于Nginx

什么是Nginx?

1、Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。
2、其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。
3、Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好

正向代理(为用户服务----正向)

举例:用户通过代理服务器访问一个×××服务器在这里插入图片描述

这里的代理服务器是为了让用户能访问到×××服务器,是为了用户服务的

反向代理(为服务器服务----反向)

举例:n个用户同时操作一个网站(高并发)
在这里插入图片描述
如果正向代理就是为了用户服务的,那么反向代理就是为了服务器服务的。
n个用户同时操作一个网站,为了处理同一个时间点的巨量请求,这里的代理服务器先接收所有请求,再根据算法来分配请求到具体的服务器上处理并返回响应结果,这也就是所谓的负载均衡(根据每一个服务器的具体状况合理分配请求)
在我看来:负载均衡就是反向代理带来的好处;正因为反向代理,才会有负载均衡

nginx.conf配置文件

因为某些项目中有Nginx,我初步了解了一下nginx.conf配置文件,但并不全面,以后会找时间去真正去学习Nginx.

	#实现负载均衡,将“www.xuecheng.com”替换成具体的服务器ip和端口
    upstream cms_server_pool{
             #服务器ip和端口
             server 127.0.0.1:31001 weight=10;
    }

    server{ 
            listen	80;
            server_name	www.xuecheng.com;
            ssi	 on;
            ssi_silent_errors	on;
            location	/	{
	alias	F:\2020-3-15heima\UI\xc-ui-pc-s在这里插入图片描述tatic-portal/;
	index	index.html;
	}
           #页面预览
           location /cms/preview/ {
                        proxy_pass http://cms_server_pool/cms/preview/;
           }
}

#学成网媒体服务代理(允许访问的域名列表,类似于Map映射结构)
   map $http_origin $origin_list{
      default http://www.xuecheng.com;
      "~http://www.xuecheng.com" http://www.xuecheng.com;
      "~http://ucenter.xuecheng.com" http://ucenter.xuecheng.com;
   }
   #学成网媒体服务代理
   server {
            listen 80;
            server_name video.xuecheng.com;
            location /video {
                 proxy_pass http://video_server_pool;
                 add_header Access-Control-Allow-Origin $origin_list; //只允许 origin_list 列表下的域名才能访问该资源
                 #add_header Access-Control-Allow-Origin *;  //任何网站可以访问该资源(服务器和服务器不用遵循同源策略)
                 add_header Access-Control-Allow-Credentials true; //跨域凭证
                 add_header Access-Control-Allow-Methods GET; //跨域方法
            }
     }

1、 cms_server_pool 是一个服务器池,Nginx代理服务器就是向这里的服务器分发请求的
2、weight=10 是权重,权重越大,被分发到的请求就越多
3、server 配置Nginx服务器参数
3、listen 80 Nginx占用本机的80端口
4、server_name 域名,借此可区分不同的服务
5、location:后面的字符串表示当你通过域名+字符串时,此时的请求会被Nginx代理服务器接收,再分发到服务器池中,把具体的服务器ip和端口替换掉"cms_server_pool"即可向具体的服务器提交请求了

反向代理流程

1、调用该函数

preview:function(pageId){
  window.open("http://www.xuecheng.com/cms/preview/"+pageId);
}

2、根据Nginx配置文件
在这里插入图片描述
1、向服务器发起 http://www.xuecheng.com/cms/preview/"+pageId 请求
注:该请求默认采用端口:80完整写法 http://www.xuecheng.com:80/cms/preview/"+pageId

2、因为Nginx配置文件中的服务器域名设置为 www.xuecheng.com端口是80,所以Nginx会拦截该请求

3、拦截后根据 location的字段匹配请求

4、通过cms_server_pool找到对应的连接池 cms_server_pool

5、从cms_server_pool连接池中获取的具体服务器的服务地址与ip

6、Nginx通过负载均衡算法(根据服务器性能,配置,加权等等)分发请求,将具体的服务器IP与端口嵌套到请求中来请求具体的服务器
(从cms_server_pool连接池中获取的具体服务器的服务地址与ip将之前 www.xuecheng.com:80的字段替换,所以http变成了——>http:/127.0.0.1:31001/cms/preview/"+pageId
在这里插入图片描述
Nginx的流程概括来说就是:拦截——>匹配——>分发
1、拦截:根据设置好的拦截域名与端口把符合条件的请求拦截
2、匹配:匹配除了域名和端口字段后的部分uri符合则进入连接池
3、分发:从连接池中根据负载均衡算法获取服务器IP和端口进而向具体服务器请求

当然我们也可以在客户端和服务器之间设置多台nginx进行转发

补充:

一个Nginx.conf的配置文件可以配置多个server,采用不同的server name或者端口;

当你配置了多个server时,你启动nginx就会启动全部server服务,80、90、91端口与域名拦截全部生效!(并不是一个nginx.conf只能配置一个nginx服务器哦)

server{ 
            listen	80;
            server_name	www.xuecheng.com;
            ssi	 on;
            ssi_silent_errors	on;
            location	/	{
			alias F:/2020-3-15heima/UI/xc-ui-pc-static-portal/;
			index	index.html;
			}
           #静态资源,包括系统所需要的图片,js、css等静态资源
           location /static/img/ {
                 alias F:/2020-3-15heima/UI/xc-ui-pc-static-portal/img/;
           }
   }

   #学成网图片服务
   server {
            listen 80;
            server_name img.xuecheng.com;
            #个人中心
            location /group1 {
                 proxy_pass http://img_server_pool;
                 }
             #location /group2 {
             #    proxy_pass http://img_server_pool;
             #    }
   }
   #学成网媒体服务
   server {
            listen 90;
            server_name localhost;
               #视频目录
               location /video/ {
               alias F:/develop/video/;
               }
   }

拓展:

1、在网上查得Nginx对静态资源的处理速度是Tomcate服务器的6倍,所以静态资源应由具体服务器返回到Nginx代理服务器上处理返回客户端,动态资源由具体服务器返回客户端。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值