Linux: 配置Ngnix作为Web Server详解

来源:互联网 发布:微信推广淘宝优惠券 编辑:程序博客网 时间:2024/05/27 21:06

配置Ngnix作为Web Server详解

IO模型:

阻塞:当一个进程发起的IO请求不能得到满足的时候,必须等待至对方把响应数据准备好,内核必须从磁盘把数据复制到内核缓存区,再从内核缓冲区复制到进程缓冲区,在此期间进程必须处在等待。

非阻塞:轮询查看数据是否准备好

同步:对方必须接收完数据,才回复

异步:把二进制数据发送出去即可,从硬件的角度看,不同同步时钟信号


同步阻塞
异步阻塞:IO复用

同步阻塞:event-driven
异步非阻塞: aio


Nginx:

具备Nginx的基本功能

轻量级的反向代理:web,mail

 

Tengine: 淘宝在Nginx基础上加入很多共和修改很多bug.


Nginx基本的HTTP特性详解:

1.处理静态文件:和httpd类似,依赖相应模块(CGI)才能处理动态文件;

2.处理索引文件以及自动索引:返回一个主页面给用户

3.打开文件描述符缓存(重要特性):可以缓存文件的源数据和描述符,下次找同一个文件,就能用从缓存中找到文件的路径,直接从磁盘块装载。

4.使用缓存加速反向代理:

5.简单负载均衡及容错:能实现后端服务器的健康状态检查,不支持1.2,只支持1.2,幸运的是淘宝做了很大的改进,发行了新版本:Tengine。

6.支持远程FastCGI(支持php),uwsgi(支持pyhton)

  Varnish:

      Nginx:cache(disk)

      Httpd:cache(disk, memory)

Squid

Squid和varnish相当于httpd和ngnix,squid考虑早期计算机,vrinish考虑现代计算机。现在Nginx有支持memcache的模块,可以直接联系Memcache。

 7.模块化架构. 过滤器包括gzip压缩,ranges支持,Chunked相应,XSLT,SSI(服务器端包括)及图像缩放。

 8.支持SSL,TLSSNI




Nginx的配置(分段):

servergroupworkerhttp{    server{       location{}    }}mail{}

支持异步的IO框架:

Kqueue(FreeBSD 4.1), epol(Linux 2.6+),/dev/poll(Solaris 7 11/99+)



支持异步的IO框架:

Kqueue(FreeBSD 4.1), epol(Linux 2.6+),/dev/poll(Solaris 7 11/99+)


Sendfile机制:

不用sendfile机制的一般流程:


使用sendfile后:

请求直接在内核封装好,读过来就直接相应了:



安装配置Nginx:

Yum list all  | grep gd

Nginx.conf详解:

Worker_processes 1;  //启动的worker线程数

//事件驱动中每个worker支持的最大连接数

//测试后,得到较优化的值

Events{

  Worker_connections 1024; 

}

//web服务相关的配置

Http{

    Include  mime.type; //配置默认支持的类型

   #Log_format main  …

   #access_log  logs/access.log main

   Sendfile on;

   #tcp_nopush no;  //在网络拥塞方面的算法Nagle算法,这个是对小数据包的延迟推送算法,如果启用,在http环境下,会造成客户端响应缓慢

   

}

Keeplive_time 65;  //使用长连接

//Nginx纯虚拟主机,每个server定义一个虚拟主机

//server_name不同支持不同主机

Server{

    Listen 80;

   Server_name localhost;//server_name不同,表示不同虚拟主机

   //融合了httpd的DocumentRoot和Location

Location /URI/{

         Root “/web/hodocs”  //定义URI的网页存放路径

     Index index.htmlindex.htm

}

Error_page 500 502 503 504 /50x.html

Location = /50x.html{

            Root  html;

}

//location的4中用法:

//location URI{}: 对当前路径及子路径下的所有对象都生效

//location = URI{}: 只对当前路径生效,精确匹配

//location  ~ URI{}: 模式匹配,使用正则表达是,不区分大小写

//location ~* URI{}:模式匹配,区分大小写

//location ^~{}: 不使用正则表达式

Location /bbs/{

     Root /web;  //在web目录下找bbs目录

   Index index.html,index.htm

   //定义基于IP的访问控制法则,按照次序,从小到大

   allow 172.16.100.117

   deny all

   //测试:curl http://172.16.100.106/bbs, 禁止访问

   //定义基于用户的访问控制

   auth_basic   “Restricted Area …”

   Auth_basic_user_file /etc/nginx/.users;  //要用httpd的htpasswd

   //所以要安装httpd,但不能启用,否则会占用80端口

   Autoindex on;  //自动索引,支持列表显示文件

    

}

}

Nginx service reload

Location /status{

 

}

 

//支持证书的Sserver

Ssl_certificate  cert.pem  //证书

Nginx –t    //语法检查

LEMP:

PHP+MySQL

Nginx不支持以模块化的方式支持PHP,可以以FastCGI

方式支持PHP.






0 0
原创粉丝点击