标签归档:Nginx

Nginx、LVS、HAProxy负载均衡软件的优缺点详解

Nginx、LVS、HAProxy是目前使用最广泛的三种负载均衡软件,本人都在多个项目中实施过,参考了一些资料,结合自己的一些使用经验,总结一下。

一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术。具体的应用需求还得具体分析,如果是中小型的Web应用,比如日PV小于1000万,用Nginx就完全可以了;如果机器不少,可以用DNS轮询,LVS所耗费的机器还是比较多的;大型网站或重要的服务,且服务器比较多时,可以考虑用LVS。

一种是通过硬件来进行进行,常见的硬件有比较昂贵的F5和Array等商用的负载均衡器,它的优点就是有专业的维护团队来对这些服务进行维护、缺点就是花销太大,所以对于规模较小的网络服务来说暂时还没有需要使用;另外一种就是类似于Nginx、LVS、HAProxy的基于Linux的开源免费的负载均衡软件,这些都是通过软件级别来实现,所以费用非常低廉。

目前关于网站架构一般比较合理流行的架构方案:Web前端采用Nginx、HAProxy+Keepalived作负载均衡器;后端采用MySQL数据库一主多从和读写分离,采用LVS+Keepalived的架构。当然要根据项目具体需求制定方案。

继续阅读

php-fpm的配置与应用指南[推荐]

一、什么是php-fpm

PHP-FPM  全程是 FastCGI Process Manager (FastCGI进程管理器),对于PHP 5.3.3之前的php来说,是一个补丁包 ,旨在将FastCGI进程管理整合进PHP包中。如果你使用的是PHP5.3.3之前的PHP的话,就必须将它patch到你的PHP源代码中,在编译安装PHP后才可以使用。

继续阅读

CGI、FastCGI、PHP-CGI、PHP-FPM的联系与区别

什么是CGI

CGI全称是“公共网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序须运行在网络服务器上。CGI可以用任何一种语言编写,只要这种语言具有标准输入、输出和环境变量。如php,perl,tcl等。

继续阅读

Nginx中http_fastcgi_module的配置

1、fastcgi_bind

Syntax: fastcgi_bind address [transparent] | off;
Default: —
Context: http, server, location
指令在调用connect()函数之前将解析每个上游socket到一个本地地址,可以使用在主机拥有多个网卡接口或别名,但是你只允许到外的连接来自指定的网卡或者地址的情况下。

继续阅读

Nginx中http_core_module的配置

1、aio(异步IO)

Syntax: aio on | off | threads[=pool]; #不知道什么原因 on设置在1.11版本中,不可用
Default: aio off;
Context: http, server, location
  • 在linux平台下,nginx的aio和sendfile不能同时生效。
  • aio和sendfile同时开启的情况下,当请求的文件大小>= direction,aio生效,反之sendfile生效。
  • 对于大文件采用aio,节省cpu,而对于小文件,采用sendfile,减少拷贝;并且对于大文件aio采用directio,避免挤占文件系统缓存,让文件系统缓存更多的小文件。

继续阅读

Nginx Location配置总结

语法:location [=|~|~*|^~] /uri/ { … }
配置块:server

  • =表示将URI作为字符串,以便于参数中的URI做完全匹配。
  • ~表示匹配URI时,字母大小写是敏感的。
  • ~*表示匹配URI时,忽略字母大小写。
  • ^~表示匹配URI时,只需要前半部分与uri参数匹配即可。
  • @表示用于nginx服务器内部请求之间的重定向,带有@的location不直接处理用户请求。
  • uri参数可以使用正则表达式。
  • 使用locaiton / {}可以匹配所有的请求。
  • 首先匹配 =,其次匹配^~, 其次是按文件中顺序的正则匹配,最后是交给 / 通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。

继续阅读

Nginx 配置之安全篇

一、隐藏不必要的信息

大家可以看一下我的博客请求响应头,有这么一行 server: nginx,说明我用的是 Nginx 服务器,但并没有具体的版本号。由于某些 Nginx 漏洞只存在于特定的版本,隐藏版本号可以提高安全性。这只需要在配置里加上这个就可以了:

server_tokens off;

继续阅读