百度云虚拟主机(Baidu Cloud Hosting,简称BCH)最近发布了重大升级,在支持原有Lighttpd web引擎的同时,新增了对Nginx Web引擎的支持。根据官方的说明,支持新的web引擎只是这次升级的冰山一角。接下来我们将细细分析这次升级以及这些升级给用户带来的真正益处。
水面下的升级:最新的docker版本
BCH是业内率先使用Docker进行虚拟化实现的云主机服务,在docker领域耕耘多年。这次升级采用了全新版本的Docker1.11来支撑用户站点的运行,借助于最新的docker技术使得用户的使用体验有了全方面的升级:
安全升级
新的Docker采用了服务进程和容器进程分离的架构方式,并加强了Namespaces、Cgroups、AppArmor等安全限制,用户站点间的隔离更加充分,更好的保障用户主机的安全和稳定
新的Docker镜像支持分层架构,容器启动、更新速度更快,读写操作更安全。
性能提升
底层架构也全面更新,能够更充分的利用系统深层资源,让用户站点更快速的响应访问请求,承载更多的并发访问,极大的提升建站性能。
资源利用率提高
为了充分挖掘新docker的潜力,BCH底层进行了重新开发,镜像采用了自动化的制作方式,对运行环境的服务进行精简整合,针对建站站点的特性进行全面优化,新的docker容器内的系统负载大幅降低,站点本身拥有更多的内存空间,大大减少站点出现内存溢出、无响应等问题的概率,用户站点能够享受更流畅、更可靠的建站体验。
水面上的升级:Nginx web引擎
市面上比较流行的web服务器,除了lighttpd,还有Nginx和Apache,而作为企业级虚拟主机类型产品,开放云还是在业内首次提供以Nginx为核心Web引擎的主机产品。而这次升级选择优先支持Nginx而不是Apache,是因为相比于后两者,Nginx有着比较明显的优势。
配置简洁,使用更方便
Nginx的配置是基于perl语法的,更为简洁,正则的支持很强大。同时,BCH的nginx,在更改配置文件,重载站点后,会利用nginx -t来检查配置文件,如果配置文件错误,会将网站导向错误页,告诉用户错误的具体位置。而Apache的话,则无法提供相应的功能,如果配置填写错误,服务器就无法启动成功,也很难定位错误。
性能更好,资源消耗更低
Apache是以多进程或者多线程的方式工作,对于请求的处理是阻塞式的。以多进程为例,这种模式意味着,当请求数增加的时候,Apache将会创建更多的进程来响应请求,进程越多,耗费的内存也的越多,而同时进程间的频繁切换,也会让CPU更加繁忙,很耗资源和时间。
Nginx采用基于事件通知的epoll模型,对于请求的处理是异步非阻塞的。Nginx把一个完成的连接请求处理划分成了不同的事件,比如accept(), recv(),磁盘IO,send()等,每个部分都有相应的模块去处理。以接受请求为例,Nginx会注册接受请求的事件,注册后,cpu可以去做别的任务,当有连接请求到来时,epoll的轮询会告诉进程,进程再开始处理请求,可以多个连接对应一个进程。分阶段资源分配技术的采用,使得Nginx的CPU与内存占用率非常低,能毫无压力的应对高并发的场景,十分适合云主机。
BCH的Nginx服务器采用了16年新推出的1.10.0版本,相比于原有的Lighttpd服务器,Nginx服务器提供了更多的功能:
配置优化
对http层的参数的特殊调优,针对云主机的应用场景进行了配置优化。
支持自定义Nginx原生配置
用户可以利用原生配置完成更为复杂的需求,比如防盗链、自定义黑白名单、绑定二级域名到子目录、定制访问日志、自定义fastcgi参数等等。
扩展功能
集成了http_ssl_module、http_realip_module以及第三方模块——openresty的lua-nginx-module。用户可以通过lua扩展实现很多好玩的功能,比如精细的访问控制、更复杂的rewrite跳转、根据IP做不同响应、过滤post参数甚至调用mysql、redis等等。后续BCH还将集成更多官方及第三方nginx扩展组件,以实现更多、更强大的主机功能。
兼容现有应用
BCH对现有应用进行了适配,现有运行在lighttpd上的应用,如果没有强依赖于lighttpd的功能配置,可以直接切换到Nginx上运行,不需要额外操作。另外,Nginx服务器和Lighttpd服务器之间是双向可切换的,用户随时可以根据自己的需求和喜好选择合适的web服务器。
BCH升级到Nginx Web引擎,又一次成为业内技术标杆,重新定义了新一代主机的技术标准,引领主机技术走向新高度。
百度开放云
微信:baidu_cloud
https://cloud.baidu.com
长按二维码关注