Nginx简单介绍以及安装与配置

2018-09-20 09:58:31 浏览数 (1)

Project 1:Nginx和Apache的区别

1. apache 相对于nginx 的优点:

  • rewrite ,比nginx 的rewrite 强大
  • 动态页面,nginx处理动态请求是鸡肋,一般动态请求要apache去做,nginx只适合静态和反向。
  • 模块超多,基本想到的都可以找到
  • 少bug ,nginx 的bug 相对较多超稳定

2. nginx相对于apache的优点:

  • 轻量级,同样起web 服务,比apache占用更少的内存及资源 ,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。在高连接并发的情况下,Nginx是Apache服务器不错的替代品: Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一. 能够支持高达 50,000 个并发连接数的响应, 这归功于Nginx为我们选择了 epoll and kqueue 作为开发模型.
  • 抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下nginx 能保持低资源低消耗高性能
  • 高度模块化的设计,编写模块相对简单
  • 社区活跃,各种高性能模块出品迅速啊
  • Nginx本身就是一个反向代理服务器
  • 负载均衡能力突出,Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务, 也可以支持作为 HTTP代理 服务器对外进行服务. Nginx采用C进行编写, 不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多.

3. 核心区别:apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程

一般来说,需要性能的web 服务,用nginx 。如果不需要性能只求稳定,那就apache 吧。后者的各种功能模块实现得比前者,例如ssl 的模块就比前者好,可配置项多。这里要注意一点,epoll(freebsd 上是 kqueue )网络IO 模型是nginx 处理性能高的根本理由,但并不是所有的情况下都是epoll 大获全胜的,如果本身提供静态服务的就只有寥寥几个文件,apache 的select 模型或许比epoll 更高性能。

先说Select:

  • Socket数量限制:该模式可操作的Socket数由FD_SETSIZE决定,内核默认32*32=1024.
  • 操作限制:通过遍历FD_SETSIZE个Socket来完成调度,不管哪个Socket是活跃的,都遍历一遍(这就是apache慢的原因).

再说Epoll:

  • Socket数量无限制
  • 操作无限制:基于内核提供的反射模式,有活跃Socket时,内核访问该Socket的callback,不需要遍历轮询(这当然是nginx快的原因啦).

原理部分小编觉得读者知道这些就够了,起码当别人问起你选择上述二者之一的理由你已经够应付啦,当然小编还给你推荐一种折中的方案,nginx做前端,apache做后端啦

Project 2:安装nginx

软件需求:

Step 1:安装pcre-devel,以及建立nginx用户

# yum install pcre-devel

# groupadd -r nginx

# useradd -r -g nginx -M nginx

    准备工作,nginx的gzip模块需要zlib库,rewrite模块需要pcre库,ssl模块需要openssl库,那么我们来依次安装它们。

zlib库安装

1)下载:wget http://zlib.net/zlib-1.2.8.tar.gz

2)  解压:tar -zxvf zlib-1.2.8.tar.gz

3) 安装:./configure –prefix=/usr/local/zlib-1.2.8 && make &&make install

pcre库安装

1)下载:wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.38.tar.gz

2) 安装:

代码语言:javascript复制
./configure 
代码语言:javascript复制
--prefix=/usr/local/pcre-8.38 
代码语言:javascript复制
--libdir=/usr/local/lib/pcre 
代码语言:javascript复制
--includedir=/usr/local/include/pcre
代码语言:javascript复制
make
代码语言:javascript复制
make install

openssl 库安装

1)下载:wget http://www.openssl.org/source/openssl-1.0.1e.tar.gz

2)安装:

代码语言:javascript复制
./configure --prefix=/usr/local/openssl-1.0.1e && make && make install

通过openssl version命令查看是否安装成功。

Step 2:解压缩nginx的源码并安装

# tar -zxvf nginx-1.3.16.tar.gz -C /usr/local/src/

# cd /usr/local/src/nginx-1.3.16/

# ./configure

--conf-path=/etc/nginx/nginx.conf

--error-log-path=/var/log/nginx/error.log

--http-log-path=/var/log/nginx/access.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_module

--with-http_stub_status_module

--with-http_gzip_static_module

--http-client-body-temp-path=/var/tmp/nginx/client/

--http-proxy-temp-path=/var/tmp/nginx/proxy/

--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/

--with-pcre

# make && make install

# mkdir -p /var/tmp/nginx/client

Step 3:启动nginx服务并在客户端做测试

# /usr/local/nginx/sbin/nginx & 

查询nginx的启动状态

客户机浏览器输入http://ip试试  (ip 可以通过 ifconfig查看)

Nginx启动出错 error while loading shared libraries:

http://www.cnblogs.com/wenanry/archive/2012/04/16/2451881.html

http://www.iitshare.com/error-while-loading-shared-libraries-libpcre-so-1.html

/usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory 从错误看出是缺少lib文件导致,进一步查看下

ln -s /usr/local/lib/libpcre.so.1 /lib

nginx: [emerg] getpwnam("nginx") failed  错误则

配置文件nginx.conf的改为 user  nginx;

0 人点赞