Nginx 详解与安装

一,Nginx  简介:

1,Nginx是一款优秀的Web服务软件,他的优点是方便,简单,灵活,是一款极具发展潜力的Web服务器。

2,nginx是一个开源的,支持高性能,高并发的www服务和代理服务软件

3,nginx具有三大功能(服务)

        (1)可以充当Web服务器。(作为Web服务软件)

(2)还可以充当负载均衡 。(反向代理或负载均衡服务)  Web服务器前边就是负载均衡

(3)还可以当缓存服务器。(前端业务数据缓存服务)就做一个Web缓存图片视屏静态缓存

4,特点:是支持高并发,对静态的处理非常好。 内存存储占用小。

(1),Nginx很好用很小,但是越这样的越难开发,它是通过一种叫异步I/O事件模型来实现的。叫做epoll

            Nginx是通过epoll模型来实现的外部服务。

(2),Nginx总体性能要高于Apache,因为Nginx承接单个用户需要的系统资源少,所以从并发来说,Nginx要比Apache有更大的并发量。(如果只作为Web服务器来说中小企业用的Nginx更多一些,大企业局部是Nginx)

(3), Apache  用的是select模型, 这是同步IO网络模型  (用户太多了受不了,为什么大企业还用呢? 使用负载均衡,就是添加Apache数量。)、

          Apache   处理的连接数最多不超过1024个。(而且要从新编译)

Nginx    用的是epoll模型 ,这是异步网络I/O模型(随着用户的增加,性能上基本没有变化,性能很好。)

Nginx     处理的连接数是无限制

显然开发epoll模型比较难, select开发比较简答

5,同步I/O,异步I/O

      (1),进程产生的线程,线程是干活的。

      (2),国内的游戏之所以垃圾,其都是单线程,只能干一件事,并且速度有I/O阻塞。

       (3),单线程和多线程都叫同步阻塞I/O模型,必须一件事一件事干,同步就是这一件事没干完前,就得等它。这就是select模型

(4)异步I/O模型也叫非阻塞模型。就是Nginx的epoll模型。

       Nginx可以启很多线程,每个线程能干无数个事

     (5)异步就是在单线程内开启多个服务,一个未完成不用等,开启另一个,同一时间可以干多件事。这就是异步I/O模型的原理。

二,编译Nginx

   1,(1)从桌面把Nginx(nginx-1.10.2.tar.gz)包放在root下

       (2)先安装支持包。 用yum安装(别忘挂盘)

      (3)#yum -y install pcre-devel openssl-devel

     这两个支持包必须有pcre-devel和openssl-devel

 (4)# tar xf nginx-1.10.2.tar.gz -C /usr/src

          解压这个文件包(nginx-1.10.2.tar.gz)指定放在/usr/src 下

          之后过去

          #cd /usr/src/nginx-1.10.2/

(5)先创建一个程序用户#useradd –s /sbin/nologin –M www                 

  用户名是www创建在了/sbin/nologin目录下,不能shell登录此用户。

(6)先安装编译支持软件

         #yum –y install gcc gcc-c++ make automake

然后开始编译#

#./configure --user=www --group=www                              --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

(7)然后编译安装

#make && make install

(8)#cd /usr/local/nginx/ 进入ls里边有四个目录

Conf(配置文件)  html(网页目录)  logs(日志) 

Sbin(系统管理员使用的管理程序)

(/usr/local下一般是你安装软件的目录)

(9)#cd conf/   先进入conf目录.   #ls看一下。

          nginx.conf这就是配置文件。

          nginx.conf.default和它的备份。

          这个文件里边装的都是媒体类型。

(10)现在开始配置nginx.conf文件

首先看下nginx.conf文件内多少行

#cat nginx.conf | wc –l

之后去掉内容的#号和 空格 从它的默认备份文件写回到配置文件

# egrep -v "#|^$" nginx.conf.default > nginx.conf

(11)#vim nginx.conf   

 

这行可以先暂时去掉这是报错页面。

 

就这18行就可以搭载Web服务了。

 

(12)接下来一行一行的认识下。

1 worker_processes  1;      → Nginx工作的进程个数 这是1个

  2 events {                 →   2到4行事件函数  第3行进程里的线程个数               

  3     worker_connections  1024;     

  4 }

  5 http {      → 5行以下都是http函数内容(整个函数里边就是Web服

                                                     务Web服务就在这个模块)

  6     include       mime.types;   →(include导入的意思,把

mime.types所有内容引导到当前行当前的配置文件)

              

  7     default_type  application/octet-stream;

  8     sendfile        on;      →(文件的高效传输默认就是开的sendfile发送文件)

  9     keepalive_timeout  65;  →(连接保持功能持续65秒,

Keepalive保持   timeout超时)

10     server {   →(10到17行又是一个函数,是http的子函数,一个server代表一个虚拟网站。一个网站搭一个server,两个就再搭建一个server)

 11         listen       80;    →(socket进程的监听端口)

 12         server_name  localhost;       →(域名 网站名 主页名)

 13         location / {

 14             root   html;        →(网站的网页从哪开始从一个叫html目录下边开始算我的网站的根,root根的意思,从html开始算我的网页目录,网页的根目录路径)

 15             index  index.html index.htm;   →(index索引的意思就是首页,这行指的是指定网站的首页是哪个网页名。)

 16         }

 17     }

 18 }

(13)什么叫做连接保持如TCP三次握手,过程中断了这进程结束,但连续保持就是TCP连接保持还在建立着我等你再发请求,就不用频繁建立三次握手了,这样节约系统资源,要不然服务器老得跟我进行三次握手对服务器是个损耗。所以这个功能在服务器遭遇大并发时打开,这样就可以降低三次握手带来的成本消耗。阿帕奇因为他的接待能力太低了有可能就要关。 Nginx 第9行这不用关。

原文地址:https://www.cnblogs.com/changtianwei/p/9948286.html