Nginx介绍

Nginx介绍

nginx可以做什么?

  1. 可针对静态资源高速高并发访问及缓存。

  2. 可使用反向代理加速,并且可进行数据缓存。

  3. 具有简单负载均衡、节点健康检查和容错功能。

  4. 支持远程FastCGI服务的缓存加速。

  5. 支持FastCGI、Uwsgi、SCGI、Memcached Servers的加速和缓存。

  6. 支持SSL、TLS、SNI。 https

  7. 具有模块化的架构:过滤器包括gzip压缩、ranges支持、chunked响应、XSLT、SSI及图像缩放等功能。在SSI过滤器中,一个包含多个SSI的页面,如果经由FastCGI或反向代理处理,可被并行处理。

作为WEB服务的话支持

  1. 支持基于名字、端口及IP的多虚拟主机站点。

  2. 支持Keep-alive和pipelined连接。

  3. 可进行简单、方便、灵活的配置和管理。

  4. 支持修改Nginx配置,并且在代码上线时,可平滑重启,不中断业务访问。

  5. 可自定义访问日志格式,临时缓冲写日志操作,快速日志轮询及通过rsyslog处理日志。

  6. 可利用信号控制Nginx进程[注释]。

  7. 支持3xx-5xx HTTP状态码重定向。

  8. 支持rewrite模块,支持URI重写及正则表达式匹配。

  9. 支持基于客户端IP地址和HTTP基本认证的访问控制。

  10. 支持PUT、DELETE、MKCOL、COPY及MOVE等较特殊的HTTP请求方法。

  11. 支持FLV流和MP4流技术产品应用。

  12. 支持HTTP响应速率限制。

  13. 支持同一IP地址的并发连接或请求数限制。

  14. 支持邮件服务代理。

简单点就是支持以下三种应用场景

(1)作为Web服务软件

(2)反向代理或负载均衡服务

(3)前端业务数据缓存服务

优点

  1. 支持高并发:能支持几万并发连接(特别是静态小文件业务环境)。

  2. 资源消耗少:在3万并发连接下,开启10个Nginx线程消耗的内存不到200MB。

  3. 可以做HTTP反向代理及加速缓存,即负载均衡功能,内置对RS节点服务器健康检查功能,这相当于专业的Haproxy软件或LVS的功能。

  4. 具备Squid等专业缓存软件等的缓存功能。

  5. 支持异步网络I/O事件模型epoll(Linux 2.6+)。

apache的特点

  1. Apache 2.2版本非常稳定强大,据官方说,Apache 2.4版本性能更强。

  2. Prefork模式取消了进程创建开销,性能很高。

  3. 处理动态业务数据时,因关联到后端的引擎和数据库,瓶颈不在Apache上。

  4. 高并发时消耗系统资源相对多一些。

  5. 基于传统的select模型,高并发能力有限。

  6. 支持扩展库,可通过DSO、apxs方法编译安装额外的插件功能,不需要重新编译Apache。

  7. 功能多,更稳定,更安全,插件也多。

  8. 市场份额在逐年递减。

lighttpd的特点

  1. 基于异步网络I/O模型,性能、并发都与Nginx相近。

  2. 扩展库是SO模式,比Nginx灵活。

  3. 目前国内的使用率比较低,安全性没有Apache和Nginx好。

  4. 通过插件(mod_secdownload)可实现文件URL地址加密(优点)。

  5. 社区不活跃,市场份额较低。

图说三个服务器的性能对比

对比

为什么nginx处理并发能力更强?

并发对比

如何选择web服务器?

  1. 静态业务:若是高并发场景,尽量采用Nginx或Lighttpd,二者首选Nginx。

  2. 动态业务:理论上采用Nginx和Apache均可,建议选择Nginx,为了避免相同业务的服务软件多样化,增加额外维护成本。动态业务可以由Nginx兼做前端代理,再根据页面元素的类型或目录,转发到后端相应的服务器进行处理。

  3. 既有静态业务又有动态业务:采用Nginx。

此外,如果并发不是很大,又对Apache很熟悉,采用Apache也是可以的,Apache 2.4版本也很强大,并发连接数也有所增加。总的来说,在满足需求的前提下,首先选择自己最擅长的软件,若发现了更好的软件,可在掌握新软件之后逐步替换。虽然动态和静态业务都倾向于选择Nginx,但是大前提是自己要熟练掌握Nginx。切记,在工作中不要盲目选择软件,这可能最终会导致自己无法控制局面,从而给企业带来灾难性的损失。

nginx功能模块说明

Nginx核心功能模块(Core functionality)

conf

con

access_log的配置

access

location

基本语法

location使用的语法为:

 
location [ = | ~ | ~* | ^~ ] uri {
    ...
}

陪住

匹配这两种特殊字符“~”或“~”的区别为:“~”用于区分大小写(大小写敏感)的匹配;“~”用于不区分大小写的匹配。还可以用逻辑操作符“!”对上面的匹配取反,即“!~”和“!~*”。此外,“^~”的作用是在进行常规的字符串匹配检查之后,不做正则表达式的检查,即如果最明确的那个字符串匹配的location配置中有此前缀,那么不做正则表达式的检查。

示例场景

 
 
      
location = / {
    [ configuration A ]
}
location / {
    [ configuration B ]
}
location /documents/ {
    [ configuration C ]
}
location ^~ /images/ {
    [ configuration D ]
}
location ~* \.(gif|jpg|jpeg)$ {
    [ configuration E ]
}

图

ss

ss

rewrite

nginx的rewrite规则需要pcre的支持,其实就是正则表达式的扩展使用

rewrite指令语法

指令语法:rewrite regex replacement[flag];默认值:none应用位置:server、location、ifrewrite是实现URL重写的关键指令,根据regex(正则表达式)部分的内容,重定向到replacement部分,结尾是flag标记。下面是一个简单的URL rewrite跳转的例子:

 
 
      
rewrite ^/ (.*) http://www.etiantian.org/$1 permanent ;

regex

sadsa

企业应用

  1. 可以调整用户浏览的URL,使其看起来更规范,合乎开发及产品人员的需求。

  2. 为了让搜索引擎收录网站内容,并让用户体验更好,企业会将动态URL地址伪装成静态地址提供服务。

  3. 网站换新域名后,让旧域名的访问跳转到新的域名上,例如:让京东的360buy换成了jd.com。

  4. 根据特殊变量、目录、客户端的信息进行URL跳转等。

301跳转

 
 
      
#www virtualhost by oldboy
server {
    listen       80;
    server_name  etiantian.org;
    rewrite ^/ (.*) http://www.etiantian.org/$1 permanent;
    #<== 当用户访问 etiantian.org 及下面的任意内容时,都会通过这条 rewrite 跳转到 www.etiantian.org对应的地址
}
server {
    listen       80;
    server_name  www.etiantian.org;
    location / {
        root   html/www;
        index  index.html index.htm ;
    }
    access_log logs/access_www.log main gzip buffer=32k flush=5s;
}

不通域名的跳转

 
 
      
server {
    listen       80;
    server_name  blog.etiantian.org;
    location / {
        root   html/blog;
        index  index.html index.htm;
    }
    if($http_host ~* "^(.*)\.etiantian\.org$")
    {
        set $domain $1;
        rewrite ^(.*) http://www.etiantian.org/$domain/oldboy.html break;
    }
}
    要配置的规则内容为:
    if ($http_host ~* "^ (.*) \.etiantian\.org$")
    {
        set $domain $1;
        rewrite ^ (.*) http: //www.etiantian.org/$domain/oldboy.html break;
    }
 
 
      
#www virtualhost by oldboy
server {
    listen       80;
    server_name  www.etiantian.org etiantian.org;
    location / {
      root   html/www;
      index  index.html index.htm;
    }
    access_log logs/access_www.log main gzip buffer=32k flush=5s;
}

帐号密码认证

 
 
      
location / {
    auth_basic           "closed site";
    auth_basic_user_file conf/htpasswd;
}

语法:auth_basic string|off;默认值:auth_basic off;使用位置:http、server、location、limit_except·auth_basic_user_file语法:auth_basic_user_file file;默认值:—使用位置:http、server、location、limit_exceptauth_basic_user_file参数后接认证密码文件,file的内容如下:

 
 
      
# comment
name1:password1
name2:password2:comment
name3:password3

fastCGI

CGI(通用网关接口)

cgi


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值