`
mingren135
  • 浏览: 69632 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

nginx学习

    博客分类:
  • web
 
阅读更多

一、网站、下载、文档、模块

http://nginx.com/

http://nginx.org/en/download.html

http://wiki.nginx.org/3rdPartyModules

https://github.com/search?q=nginx&type=&ref=simplesearch

ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/

http://nginx.org/cn/docs/

 

二、特性

1)HTTP服务器

2)HTTP反向代理服务器

3)MAIL反向代理服务器

4)性能非常高

5)资源占用少(CPU、内存)

 

三、安装

1)查看编译选项

./configure --help

如:

--prefix=PATH                      set installation prefix

./configure --prefix=/usr/local/nginx  --with-pcre=/usr/local/src/pcre-8.10

2)步骤

首先,./configure:执行后可能报错,提示无xxx库,需要先安装

如:gzip 模块需要 zlib 库 ,rewrite 模块需要 pcre 库 ,ssl 功能需要 openssl 库

sudo apt-get install libpcre3 libpcre3-dev libpcrecpp0 libssl-dev zlib1g-dev

然后,make&make install

安装成功后 /usr/local/nginx 目录下有四个子目录分别是:conf、html、logs、sbin

./nginx启动,打开浏览器访问此机器的 IP,如果浏览器出现 Welcome to nginx! 则表示 Nginx 已经安装并运行成功

 

四、使用

1)./nginx

2)./nginx -s stop   直接退出

3)./nginx –s quit   优雅退出

4)./nginx -s reload  优雅装载新配置

优点:

1. 更新平滑,不中断服务,不丢失请求

2. 新配置错误时,不会替换先前的工作进程

5)./nginx –t   检查配置的正确性

6)./nginx –v  查看基本信息

7)./nginx -V   查看详细编译信息,对调试有用

 

五、配置文件

worker_processes 2;
user  admin admin;
error_log logs/error.log warn;
event {
  use epoll;
  worker_connections 20480;
}

http {
  server {
    listen 80;
    server_name www.taobao.com;

    location / {
      root html;
      index index.html index.htm;
    }
  }
}

说明:

0)最外层是main块,父层的配置会被下层继承

1)event块:定义nginx的事件模型,不可缺

2)http块:整个http服务器的必要块

3)server块:定义虚拟主机

4)location块:定义uri规则

5)if块:根据条件进行跳转

 

六、nginx处理流程

---解析请求与查找配置---

1)接收数据 2)分析请求 3)找到VS 4)找到LOCATION

---产生内容模块---

1)执行各阶段处理模块 2)产生回复内容

---过滤阶段---

1)过滤回复头 2)过滤回复主体

 

 七、查找域名

 nginx以名字查找虚拟主机时,如果名字可以匹配多于一个主机名定义,比如同时匹配了通配符的名字和正则表达式的名字,那么nginx按照下面的优先级别进行查找,并选中第一个>匹配的虚拟主机:

1)确切的名字;

2)最长的以星号起始的通配符名字:*.example.org;“*.example.org”不仅匹配www.example.org,也匹配www.sub.example.org。有一种形如“.example.org”的特殊通配符,它可以既匹配确切的名字“example.org”,又可以匹配一般的通配符名字“*.example.org”。

3)最长的以星号结束的通配符名字:mail.*;

4)第一个匹配的正则表达式名字(按在配置文件中出现的顺序)。nginx使用的正则表达式兼容PCRE。为了使用正则表达式,虚拟主机名必须以波浪线“~”起始。

server_name  ~^www\d+\.example\.net$;否则该名字会被认为是个确切的名字

 

--优化--

确切名字和通配符名字存储在哈希表中。哈希表和监听端口关联。哈希表的尺寸在配置阶段进行了优化,可以以最小的CPU缓存命中失败来找到名字。nginx首先搜索确切名字的哈希表,如果没有找到,搜索以星号起始的通配符名字的哈希表,如果还是没有找到,继续搜索以星号结束的通配符名字的哈希表。因为名字是按照域名的节来搜索的,所以搜索通配符名字的哈希表比搜索确切名字的哈希表慢。

**注意特殊的通配符名字“.example.org”存储在通配符名字的哈希表中,而不在确切名字的哈希表中。正则表达式是一个一个串行的测试,所以是最慢的,而且不可扩展。鉴于以上原因,请尽可能使用确切的名字。

**举个例子,如果使用example.org和www.example.org来访问服务器是最频繁的,那么将它们明确的定义出来就更为有效:

server {
    listen       80;
    server_name  example.org  www.example.org  *.example.org;
    ...
}

 下面这种方法相比更简单,但是效率也更低:

server {
    listen       80;
    server_name  .example.org;
    ...
}

 

八、location

location = / {
 #1
}
location ^~ /images/ {
 #2
}
location ~* \.(gif|jpg|jpeg)$ {
 #3
}
location / {
 #4
}

1)= : 精确匹配

2)^~ :前缀匹配

3)~ :正则匹配

4)没有标识符,最后匹配

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics