Nginx----大型网站高并发处理02

Nginx

虚拟主机

​ 虚拟主机就是把一台物理服务器划分成多个“虚拟”的服务器,各个虚拟主机之间完全独立,在外界看来,每一台虚拟主机和一台单独的主机的表现完全相同。所以这种被虚拟化的逻辑主机被形象地称为“虚拟主机”。

优点:

​ 由于多台虚拟主机共享一台真实主机的资源,每个虚拟主机用户承受的硬件费用、网络维护费用、通信线路的费用均大幅度降低。许多企业建立网站都采用这种方法,这样不仅大大节省了购买机器和租用专线的费用,网站服务器服务器管理简单,诸如软件配置、防病毒、防攻击等安全措施都由专业服务商提供,大大简化了服务器管理的复杂性;同时也不必为使用和维护服务器的技术问题担心,更不必聘用专门的管理人员。

类别:

​ 1、基于域名的虚拟主机,通过域名来区分虚拟主机

​ 2、基于端口的虚拟主机,通过端口来区分虚拟主机

​ 3、基于ip的虚拟主机,很少用。

1.基于域名的虚拟主机

http { 
    upstream keywords01{ 
        server node01; 
        server node02; 
} 
	upstream keywords02{ 
        server node03; 
     } 
 server { 
        listen 80; 
//访问xxx2.com的时候,会把请求导到keywords02的服务器组里
	server_name  xxx2.com;
        location / {
            proxy_pass http://keywords02;
        }
} 
    server { 
        listen 80; 
	//访问xxx1.com的时候,会把请求导到keywords01的服务器组里
	server_name  xxx1.com; 
        location / {
            proxy_pass http://keywords01;
        }
	} 
}

​ 注意:基于域名的虚拟机主机 在模拟应用场景时,需要在windows系统的hosts文件里配置域名映射;

2.基于端口的虚拟主机

http { 
    upstream keywords01{ 
        server node01; 
        server node02; 
	} 
	upstream keywords02{ 
        server node03
    } 
     server { 
    //当访问nginx的80端口时,将请求导给keywords02组
            listen 8080; 
            server_name localhost;
            location / {
                proxy_pass http://keywords02;
            }
    } 
    server { 
     //当访问nginx的81端口时,将请求导给keywords01组
            listen 81; 
            server_name localhost;
            location / {
                proxy_pass http://keywords01;
            }
       } 
}

正向代理和反向代理

正向代理

​ 举个栗子:我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这个代理服务器呢,他能访问那个我不能访问的网站,于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容,代理服务器去取回来,然后返回给我。像我们经常通过vpn访问国外的网站,此时就是正向代理。客户端必须设置正向代理服务器,当然前提是要知道正向代理服务器的IP地址,还有代理程序的端口。 再比如下面的翻墙:

在这里插入图片描述

反向代理

反向代理(Reverse Proxy) 方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器=
在这里插入图片描述

​ 反向代理隐藏了真实的服务端,当我们请求 www.baidu.com 的时候,就像拨打 10086 一样,背后可能有成千上万台服务器为我们服务,但具体是哪一台,你不知道,也不需要知道,你只需要知道反向代理服务器是谁就好了,www.baidu.com 就是我们的反向代理服务器,反向代理服务器会帮我们把请求转发到真实的服务器那里去。Nginx 就是性能非常好的反向代理服务器,用来做负载均衡。

Nginx的session的一致性问题

​ http协议是无状态的,即你连续访问某个网页100次和访问1次对服务器来说是没有区别对待的,因为它记不住你。
​ 那么,在一些场合,确实需要服务器记住当前用户怎么办?比如用户登录邮箱后,接下来要收邮件、写邮件,总不能每次操作都让用户输入用户名和密码吧,为了解决这个问题,session的方案就被提了出来,事实上它并不是什么新技术,而且也不能脱离http协议以及任何现有的web技术。
session的常见实现形式是会话cookie(session cookie),即未设置过期时间的cookie,这个cookie的默认生命周期为浏览器会话期间,只要关闭浏览器窗口,cookie就消失了。

Session共享

​ 首先我们应该明白,为什么要实现共享,如果你的网站是存放在一个机器上,那么是不存在这个问题的,因为会话数据就在这台机器,但是如果你使用了负载均衡把请求分发到不同的机器呢?这个时候会话id在客户端是没有问题的,但是如果用户的两次请求到了两台不同的机器,而它的session数据可能存在其中一台机器,这个时候就会出现取不到session数据的情况,于是session的共享就成了一个问题。

Session一致性解决方案

1 session复制

tomcat 本身带有复制session的功能。

2 共享session

需要专门管理session的软件,

memcached 缓存服务,可以和tomcat整合,帮助tomcat共享管理session。

安装memcached

http://pjyn8dgy4.bkt.clouddn.com/memcached%E5%AE%89%E8%A3%85.txt
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值