nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

为什么要用Nginx?

目前 Nginx 的主力竞争对手莫过于 Apache ,在这里小编对两者做一个简单的对比,帮助大家更好的理解 Nginx 的优势。

1、作为 Web 服务器:

相比 Apache,Nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。在高连接并发的情况下,Nginx是Apache服务器不错的替代品: Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一,能够支持高达 50000 个并发连接数的响应, 感谢Nginx 为我们选择了 epoll and kqueue 作为开发模型。

Nginx作为负载均衡服务器: Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务, 也可以支持作为 HTTP代理 服务器对外进行服务。Nginx采用C进行编写, 不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多。

2、Nginx 配置简洁, Apache 复杂:

Nginx 启动特别容易, 并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动. 你还能够不间断服务的情况下进行软件版本的升级。

Nginx 静态处理性能比 Apache 高 3倍以上,Apache 对 PHP 支持比较简单,Nginx 需要配合其他后端来使用 ,Apache 的组件比 Nginx 多。

3、最核心的区别在于:

apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程 。

4、两者的擅长领域分别是:

nginx的优势是处理静态请求,cpu内存使用率低,apache适合处理动态请求,所以现在一般前端用nginx作为反向代理抗住压力,apache作为后端处理动态请求。

Nginx 基本使用方法

系统平台:CentOS release 6.6 (Final) 64位。

一、安装编译工具及库文件

nginx系列教程(给小白的Nginx10分钟入门指南)(1)

二、首先要安装 PCRE

1、PCRE 作用是让 Nginx 支持 Rewrite 功能。下载 PCRE 安装包,下载地址: http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz

nginx系列教程(给小白的Nginx10分钟入门指南)(2)

nginx系列教程(给小白的Nginx10分钟入门指南)(3)

2、解压安装包:

nginx系列教程(给小白的Nginx10分钟入门指南)(4)

3、进入安装包目录

nginx系列教程(给小白的Nginx10分钟入门指南)(5)

4、编译安装

nginx系列教程(给小白的Nginx10分钟入门指南)(6)

5、查看pcre版本

nginx系列教程(给小白的Nginx10分钟入门指南)(7)

nginx系列教程(给小白的Nginx10分钟入门指南)(8)

三、安装 Nginx

1、下载 Nginx,下载地址:http://nginx.org/download/nginx-1.6.2.tar.gz

nginx系列教程(给小白的Nginx10分钟入门指南)(9)

nginx系列教程(给小白的Nginx10分钟入门指南)(10)

2、解压安装包

nginx系列教程(给小白的Nginx10分钟入门指南)(11)

3、进入安装包目录

nginx系列教程(给小白的Nginx10分钟入门指南)(12)

4、编译安装

nginx系列教程(给小白的Nginx10分钟入门指南)(13)

5、查看nginx版本

nginx系列教程(给小白的Nginx10分钟入门指南)(14)

nginx系列教程(给小白的Nginx10分钟入门指南)(15)

到此,nginx安装完成。

四、Nginx 配置

创建 Nginx 运行使用的用户 www:

nginx系列教程(给小白的Nginx10分钟入门指南)(16)

配置nginx.conf ,将/usr/local/webserver/nginx/conf/nginx.conf替换为以下内容

nginx系列教程(给小白的Nginx10分钟入门指南)(17)

检查配置文件ngnix.conf的正确性命令:

nginx系列教程(给小白的Nginx10分钟入门指南)(18)

nginx系列教程(给小白的Nginx10分钟入门指南)(19)

五、启动 Nginx

Nginx 启动命令如下:

nginx系列教程(给小白的Nginx10分钟入门指南)(20)

nginx系列教程(给小白的Nginx10分钟入门指南)(21)

六、访问站点

从浏览器访问我们配置的站点ip:

nginx系列教程(给小白的Nginx10分钟入门指南)(22)

Nginx 常用指令说明

1. main 全局配置

nginx在运行时与具体业务功能(比如http服务或者email服务代理)无关的一些参数,比如工作进程数,运行的身份等。

2. http服务器

与提供http服务相关的一些配置参数。例如:是否使用keepalive啊,是否使用gzip进行压缩等。

模块http_proxy:

这个模块实现的是nginx作为反向代理服务器的功能,包括缓存功能(另见文章)

proxy_pass,proxy_redirect见 location 部分。

模块http_gzip:

3. server虚拟主机

http服务上支持若干虚拟主机。每个虚拟主机一个对应的server配置项,配置项里面包含该虚拟主机相关的配置。在提供mail服务的代理时,也可以建立若干server。每个server通过监听地址或端口来区分。

模块http_stream

这个模块通过一个简单的调度算法来实现客户端IP到后端服务器的负载均衡,upstream后接负载均衡器的名字,后端realserver以 host:port options; 方式组织在 {} 中。如果后端被代理的只有一台,也可以直接写在 proxy_pass 。

4. location

http服务中,某些特定的URL对应的一系列配置项。

关于location匹配规则的写法,可以说尤为关键且基础的,参考文章 nginx配置location总结及rewrite规则写法;

5. 其它

5.1 访问控制 allow/deny

Nginx 的访问控制模块默认就会安装,而且写法也非常简单,可以分别有多个allow,deny,允许或禁止某个ip或ip段访问,依次满足任何一个规则就停止往下匹配。如:

nginx系列教程(给小白的Nginx10分钟入门指南)(23)

我们也常用 httpd-devel 工具的 htpasswd 来为访问的路径设置登录密码:

nginx系列教程(给小白的Nginx10分钟入门指南)(24)

这样就生成了默认使用CRYPT加密的密码文件。打开上面nginx-status的两行注释,重启nginx生效。

5.2 列出目录 autoindex

Nginx默认是不允许列出整个目录的。如需此功能,打开nginx.conf文件,在location,server 或 http段中加入autoindex on;,另外两个参数最好也加上去:

nginx系列教程(给小白的Nginx10分钟入门指南)(25)

,