nginx的三大功能(之一服务器)

   

nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。

y2vzmvxcck4.jpg

其主要有三个功能: (1)服务器(基本) (2)负载均衡 (3)nginx的缓存功能 今天先讲述利用nginx如何搭建一个web服务器: 如果已经做过web开发的,就熟悉如何取搭建一个基本的web服务器而来跑自己的项目,在当前基本上常用的IIS(windows)Apache(Linux),nginx是后期之秀,是在最近几年才被企业所使用的服务器,其实在众多服务器中能脱颖而出,是有其自身优点的,据统计Apache使用率61.9%(比较稳定),IIs使用率16.5%,该服务器易用前者比较容易搭建,而nginx现在占用使用率16.1%(后期之秀,效率比较高)。从这三个的比较我们能看出,nginx的主要特性使效率比较高,也使得成为现在的企业选择之一。 接下来,首先来看一下nginx和apache之间的区别,也使得我们在以后选择服务的时候,能根据自己所需要的功能选择自己需要的服务器: 1.nginx相对于apache的优势: 首先nginx是轻量级的,如果使用其作为web服务,起来起来时占用的内存资源比较少,他可以支持更多的并发连接,体现更高的效率。其实在高并发的情况,使用nginx要比apache效率高的很多,nginx能够支持高达50000个并发连接数的响应,这主要原因是nginx选择的epoll and kqueue(可扩展的事件复用技术),感兴趣的可以了解一下epoll and kqueue技术,其实select()和poll()的工作方式非常类似。 (1)抗并发,nginx请求是异步非阻塞的,而apache是阻塞型的,在高并发下,nginx能保持低资源、低消耗高性能。 (2)nginx本来就是一个反向代理服务器,其负载均衡能力比较突出,nginx既可以在内部支持Rails(符合实际高效的web开发框架,其结合了php和java来发的一些优点)和php程序对外部进行服务,可以作为Http服务器对外进行服务。Nginx采用C语言进行开发,无论是在系统开销还是内存使用率都比Perlbal 要好很多。 2.apache相对于nginx的优点: 重写功能apache要比nginx的强大 nginx一般适合做静态和反向代理,而动态代理一般要考apache完成 apache相对于使用时间比较长,bug比较少,而nginx的bug比较多 3.核心区别 apache是同步多进程模型一个连接对应一个进程,而nginx是异步的,多个连接(万级别)可以对应一个进程。 **_ 继续上面完成内容; _** 一般来说需要具有性能的web服务,最好选择nginx,如果不需要性能只求稳定则最好的选择apache即可,apache的各种功能模块实现的要比nginx好,并且可配置项也多。epoll网络IO模型是nginx处理性能高的根本理由,但并不是所有的情况下都是epoll的性能高,如果本身提供静态服务的,则apache的select模型要比nginx的epoll性能高。 Epoll: 对socket数量不限制 操作无限制:有活跃socket,内核访问该socket的callback,不需要遍历(nginx效率高的原因) select socket数量限制:该模式可操作的socket数有限,由FD_SETSIZE(C++)中的来决定,内核默认32*32=1024 操作限制:有活跃的socket,内核访问socket时,不管哪个活跃的socket都要遍历一遍(apache慢的原因) 安装nginx 官方最新的是nginx-1.3.16.tsr.gz 官方最新libevent-2.0.21-stable.tar.gz提供时间处理机制,linux5.4自带的也行,默认安装了。 Pcre 以及pcre-devel,默认pcre是安装的 1.安装pcre-devel,以及建立nginx用户 yum install pcre-devel groupadd -r nginx useradd -r -g nginx -M nginx 2.解压缩nginx的源码并安装 tar -zxvf nginx-1.3.16.tar.gz -C /usr/local/src cd /usr/local/src/nginx-1.2.16 ./configure --conf-path=/etc/nginx/bf --error-log-path=/var/log/nginx/error.log

--pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --user=nginx --group=nginx --with-http_ssl_module --with-http_flv_nodule --with-http_stub_ststatus_module --with-http_gzip_static_module --http-client-body-temp-path=/var/tmp/nginx/client --http-proxy-temp-path=/vat/tmp/nginx/proxy/ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi --with-pcre #make && make install #mkdir -p /var/tmp/nginx/client 3.启动nginx服务器并在客户端做测试 /usr/local/nginx/sbin/nginx &

查询nginx的启动状态 netstat -tupln |grep nginx 下面显示: tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 6965/nginx

客户端浏览器输入http://本机IP地址 至此,nginx安装完成 3.实现虚拟主机(比较常用的功能) nginx的配置文件比较简单 基于IP的虚拟主机 (1)准备工作 增加一个网卡地址(原有的是192.168.17.33) ipconfig eth0:0 192.168.17.34 建立两个站点目录 mkdir /website1 mkdir /website2

建立两个存放日志的目录 mkdir /var/log/nginx/website1 mkdir /var/log/nginx/website2 创建两个测试html

(2)修改配置文件 原有的配置文件中有一个默认server节点,然后在添加一个server节点 server {

  listen 192.168.17.33:80;

  server_name localhost;

  #charset koi8-r;

  access_log /var/log/nginx/website1/access.log;

  error_log /var/log/nginx/website1/error.log;

  location / {

  root /website1;

  index inde;

  }

  error_page 404 /l;

  # redirect server error pages to the static page /l

  #

  error_page 500 502 503 504 /l;

  location = /l {

  root html;

  }

  }

server {

  listen 192.168.17.34:80;

  server_name localhost;

  #charset koi8-r;

  access_log /var/log/nginx/website2/access.log;

  error_log /var/log/nginx/website2/error.log;

  location / {

  root /website2;

  index inde;

  }

  error_page 404 /l;

  # redirect server error pages to the static page /l

  #

  error_page 500 502 503 504 /l;

  location = /l {

  root html;

  }

  }

(3)停掉原有的apache服务 service httpd stop /usr/local/nginx/sbin/nginx &

(4)在客户机分别访问 如果有该测试html内容显示,则证明配置成功。 4.配置创建证书的配置文件,以及创建证书 vi /etc/pki/tls/f 45行dir=/etc/pki/CA 根据配置文件的需求创建此昂观点额文件夹和文件 mkdir certs crl newcerts touch index.txt serial echo 01>> serial //初始化文件 创建私钥

openssl genrsa 1024?private/cakey.pem chmod 600privat/cakey.pem //授权 (2)建立nginx的安全目录,并生成相关的私钥和证书文件 mkdir /usr/local/nginx/certs cd /usr/local/nginx/certs openssl genrsa 1024>nginx.key chmod 600 nginx.key (3)修改nginx配置问阿金,添加用于安全访问的站点 server {

  listen 192.168.17.33:443;

  server_name ;

  ssl on;

  ssl_certificate /usr/local/nginx/certs/nginx.cert;

  ssl_certificate_key /usr/local/nginx/certs/nginx.key;

  ssl_session_timeout 5m;

  access_log /var/log/nginx/access.log;

  error_log /var/log/nginx/error.log;

  ssl_protocols SSLv2 SSLv3 TLSv1;

  ssl_ciphers HIGH:!aNULL:!MD5;

  ssl_prefer_server_ciphers on;

  location / {

  root html;

  index inde;

  }

  } (4)重启nginx服务,访问 首次访问的时候会提示风险,选择继续浏览 (5)修改web证书 cp /etc/pki/CA/cacert.pem /usr/local/nginx/certs cd /usr/local/nginx/certs cat cacert.pem>>nginx.cert 重启nginx,访问,安装正式即可。