虚拟机服务器时间跑快,虚拟机时间同步的重要性

最近,用到Debian虚拟机作为开发一个ExtJS+Perl+CGI架构内部web应用的私有开发环境。为了省去安装Debian的麻烦,我从网上下载一个现成的虚拟机(可从此处获取)。Debian的版本是Lenny,虚拟机只安装了net-install CD里基本的软件包。系统时间也不正确。没想到这一小小的错误竟然使得登陆失败。更为奇怪的是使用Firefox浏览器的话,却可以登陆。

该ExtJS Web应用用到了服务器管理的会话(CGI::Session),会话的超时时间为120分钟。当用户输入正确的用户和密码并提交登陆表单到服务器端,服务器通过LDAP验证用户密码后就创建会话并设置超时时间,然后发送重定向指令给浏览器,使它请求应用主界面。会话的标识和超时时间作为cookie以以下指令发给浏览器:

Set-Cookie:CGISESSID=f3ef2002de66e27ee2cfae13c0933012; path=/; expires=Fri, 01-Jan-2010 07:02:02 GMT

当浏览器收到重定向指令时,正常情况下会把收到的会话标识作为cookie同时传给服务器。由于,Debian虚拟机的时间比正常时间晚了近一个月,服务器端产生的会话有效时间是一个超时的时间。chrome浏览器(9.0.597.98)会忽略该cookie,导致服务器误认为该请求是新的一次会话而重定向到登陆页面。而Firefox则不管过期时间,照发cookie。所以使用firefox可以登陆。

因此,服务器的时间必须精确,否则引起想本例一样奇怪错误是不足为奇的。

最后,给一个如何保证服务器时间精准的小贴士。几乎所有的Unix/Linux操作系统里都有一个叫NTP的服务,开启该服务就能自动更新时间。Debian下用apt-get install ntp来安装并启动NTP服务。若该服务已安装,可以使用/etc/init.d/ntp start来启动。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值