day44 Nginx Web服务应用

一、Nginx介绍

1.什么是Nginx

Nginx是一个开源的,支持高性能,高并发的WWW服务和代理服务软件。是由俄罗斯人Igor Sysove开发的。

Nginx因具有高并发(特别是静态资源)、占用资源少等特性,且功能丰富而逐渐流行起来。

在功能应用方面,Nginx不但是一个优秀的Web服务软件,还具有反向代理负载均衡功能和缓存服务功能。在反向代理负载均衡功能方面,它类似于大名鼎鼎的LVS负载均衡及Haproxy等专业代理软件,但是Nginx部署起来更为简单、方便;在缓存服务功能方面,它又类似于Squid等专业的缓存服务软件。

2.Nginx三大主要功能

3.Nginx特性

□可针对静态资源高速高并发访问级缓存。
□可使用反向代理加速,并且可进行数据缓存。
□具有简单负载均衡、节点健康检查和容错功能。
□支持远程FastCGI服务的缓存加速。
□支持FastCGI、Uwsgi、SCGI、Memcached Server的加速和缓存。
□支持SSL、TLS、SNI。
□具有模块化的架构:过滤器包括gzip压缩、ranges支持、chunked响应、XSLT、SSI及图像缩放等功能。在SSI过滤器中,一个包含多个SSI的页面,如果经由FastCGI或反向代理处理,可悲并行处理。

企业面试时需要解答如下Nginx HTTP服务器特色及优点:

(1)支持高并发:能支持几万并发连接(特别是静态小文件业务环境)。
(2)资源消耗少:在三万并发连接下,开启10个Nginx线程消耗的内存不到200MB。
(3)可以做HTTP反向代理即加速缓存,即负载均衡功能,内置对RS节点服务器健康检查功能,这相当于专业的Haproxy软件或LVS的功能。
(4)具备squid等专业缓存软件等的缓存功能。
(5)支持异步网络I/O事件模型epoll。

4.Nginx主要应用场景

(1)静态Web服务器

使用Nginx运行HTML、JS、CSS、小图片等及静态数据(此类功能类似Lighttpd软件)

Nginx是一个支持高性能、高并发的Web服务软件,它具有很多优秀的特性,作为Web服务器,与Apache相比,Nginx能够支持更多的并发连接访问,但占用的资源却更少,效率更高,在功能上也强大了很。

(2)配合运行动态Web服务器

Nginx结合FastCGI运行PHP等动态程序(例如使用fastcgi_pass方式)。
Nginx结合tomcat/resin等支持Java动态程序(常用proxy_pass方式)。
Nginx结合Lomcal/resin等支持Java动态程序(常用proxy_pass方式)。

(3)反向代理/负载均衡

在反向代理和均在均衡服务方面,Nginx可以作为Web服务、PHP等动态服务及Memcached缓存的代理服务器。

(4)做Web服务缓存区

在Web服务缓存服务方面,Nginx可通过自身的proxy_cache模块实现类squid等专业缓存软件的功能。

二、Nginx Web服务

1.Nginx作为Web服务器的主要应用场景包括:

使用Nginx运行HTML、JS、CSS、小图片等及静态数据(此类功能类似Lighttpd软件)
Nginx结合FastCGI运行PHP等动态程序(例如使用fastcgi_pass方式)。
Nginx结合tomcat/resin等支持Java动态程序(常用proxy_pass方式)。

u5.反向代理与负载均衡

代理:海外代购、微商:代理,替别人做事
正向代理:由内向外。代替 效率低。
     代替局域网内PC,请求外部应用服务。
反向代理:由外向内 代替 效率低
     代替外部的用户请求内部的应用服务器。
负载均衡;转发、效率高

2.为什么Nginx总体性能比Apache高

Nginx使用最新的epoll(Linux2.6内核)和kqueue(freebsd)异步网络I/O模型,而Apache则使用的是传统的select模型。目前Linux下能够承受高并发访问的Squid、Memcached软件都采用的是epoll模型。
  Apache则使用的是传统的select模型,Nginx使用高并发的epoll模型

比喻:

select模型:伙伴去宿舍找你,一个一个找。。效率低。
epoll模型: 伙伴去宿舍找你,先问宿管大妈,看看在哪间宿舍,然后直奔具体宿舍。效率高。

select模型:小孩撒尿:如果尿尿拉出来,带着尿尿。
epoll模型: 小孩撒尿:事先告诉所有小孩,如果要尿尿,你就站出来。阿姨就看有没有人站出来就可以了。

3.软件安装

Linux系统如何安装软件?

1.rpm安装

简单、快。
依赖多,解决依赖困难繁琐。

2.yum安装

简单、快。
自动解决依赖。
不能选择软件版本或软件存放路径。

3.编译安装(源码编译)

慢、复杂,需要GCC编译器。
可以自动以安装(版本、软件路径)。

4.将源码制作成RPM,然后放到yum仓库,实现yum自动安装。

一次性慢。
复杂、安装快。
可以自定义安装(版本、软件路径)。

5.二进制安装

4.Nginx安装

两种安装方法:

1.yum安装:
    epel源:版本低
    nginx官方源:版本高
2.编译安装

1、配置官方源yum安装

[root@web01~]# yum install nginx -y  ##=====>下载安装nginx
[root@web01~]# vim /etc/yum.repos.d/nginx.repo    ##=====>建一个目录,输入以下内容
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1
[root@web01~]# rpm -qa nginx  ##=====>查看是否安装成功
nginx-1.16.0-1.el7.ngx.x86_64
[root@web01~]# systemctl start nginx  ##=====>开启nginx服务
[root@web01~]# systemctl enable nginx  ##=====>设置为开机自启
[root@web01~]# systemctl status nginx  ##=====>查看一下状态
[root@web01~]# netstat -lntup|grep nginx  ##=====>查看nginx进程
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      8063/nginx: master  

2.编译安装

[root@web02~]# mkdir -p /server/tools ##=====>创建一个目录
[root@web02~]# cd /server/tools  ##=====>进去
[root@web02/server/tools]# wget http://nginx.org/download/nginx-1.16.0.tar.gz  ##=====>下载压缩包
[root@web02/server/tools]# yum install pcre pcre-devel -y
[root@web02/server/tools]# yum install openssl openssl-devel -y    ##=====>安装依赖包
[root@web02/server/tools]# ll  ##=====>查看是否存在
total 1012
-rw-r--r-- 1 root root 1032345 Apr 23 21:58 nginx-1.16.0.tar.gz
[root@web02/server/tools]# tar xf nginx-1.16.0.tar.gz   ##=====>解压压缩包
[root@web02/server/tools]# ll  ##=====>查看解压文件
total 1012
drwxr-xr-x 8 oldboy1 oldboy1     158 Apr 23 21:13 nginx-1.16.0
-rw-r--r-- 1 root    root    1032345 Apr 23 21:58 nginx-1.16.0.tar.gz
[root@web02/server/tools]# cd nginx-1.16.0/ ##=====>移动进nginx-1.16.0
[root@web02/server/tools/nginx-1.16.0]# ll  ##=====>查看目录
total 748
drwxr-xr-x 6 oldboy1 oldboy1    326 Apr 30 17:17 auto
-rw-r--r-- 1 oldboy1 oldboy1 296223 Apr 23 21:13 CHANGES
-rw-r--r-- 1 oldboy1 oldboy1 451813 Apr 23 21:13 CHANGES.ru
drwxr-xr-x 2 oldboy1 oldboy1    168 Apr 30 17:17 conf
-rwxr-xr-x 1 oldboy1 oldboy1   2502 Apr 23 21:12 configure
drwxr-xr-x 4 oldboy1 oldboy1     72 Apr 30 17:17 contrib
drwxr-xr-x 2 oldboy1 oldboy1     40 Apr 30 17:17 html
-rw-r--r-- 1 oldboy1 oldboy1   1397 Apr 23 21:12 LICENSE
drwxr-xr-x 2 oldboy1 oldboy1     21 Apr 30 17:17 man
-rw-r--r-- 1 oldboy1 oldboy1     49 Apr 23 21:12 README
drwxr-xr-x 9 oldboy1 oldboy1     91 Apr 30 17:17 src
[root@web02/server/tools/nginx-1.16.0]# useradd -s /sbin/nologin www -M  ##=====>创建一个用户www
[root@web02/server/tools/nginx-1.16.0]# id www  ##=====>查看用户是否创建成功
uid=1016(www) gid=1016(www) groups=1016(www)
[root@web02/server/tools/nginx-1.16.0]# ./configure  --user=www --group=www --prefix=/application/nginx-1.16.0/ --with-http_stub_status_module  --with-http_ssl_module --with-pcre  ##=====>见末尾
[root@web02/server/tools/nginx-1.16.0]# make  ##=====>
[root@web02/server/tools/nginx-1.16.0]# make install  ##=====>
[root@web02/server/tools/nginx-1.16.0]# ln -s /application/nginx-1.16.0/ /application/nginx  ##=====>创建一个软链接
[root@web02/server/tools/nginx-1.16.0]# /application/nginx/sbin/nginx   ##=====>
[root@web02/server/tools/nginx-1.16.0]# netstat -lntup|grep nginx  ##=====>
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      13073/nginx: master 


####configure参数的作用
--prefix=PATH  路径
--user=USER    用户
--group=GROUP  组
--with-pcre    伪静态
--with-http_stub_status_module 状态
--with-http_ssl_module      加密 443

编译安装配置:

[root@web02 /application/nginx]# tree
.
├── conf
│   ├── fastcgi.conf         #和动态服务的接口配置参数,配合php
│   ├── fastcgi.conf.default
│   ├── fastcgi_params 
│   ├── fastcgi_params.default
│   ├── koi-utf
│   ├── koi-win
│   ├── mime.types            #媒体类型
│   ├── mime.types.default
│   ├── nginx.conf            #主配置文件
│   ├── nginx.conf.default
│   ├── scgi_params
│   ├── scgi_params.default   #和动态服务的接口配置参数
│   ├── uwsgi_params
│   ├── uwsgi_params.default  #和动态服务的接口配置参数,配合Python
│   └── win-utf
├── fastcgi_temp
├── html            #默认站点目录。  
│   ├── 50x.html
│   └── index.html  #默认的首页,10.0.0.8不指定文件,默认加载index.html首页。
├── logs
│   ├── access.log  #访问日志
│   ├── error.log   #Nginx错误日志。
│   └── nginx.pid   #进程号对应文件。
├── sbin
│   └── nginx       #启动命令。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,976评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,249评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,449评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,433评论 1 296
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,460评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,132评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,721评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,641评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,180评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,267评论 3 339
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,408评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,076评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,767评论 3 332
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,255评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,386评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,764评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,413评论 2 358

推荐阅读更多精彩内容

  • 《老男孩Linux运维》笔记 隐藏Nginx软件版本号 一般来说,软件的漏洞都和版本有关。因此要尽量隐藏对访问用户...
    Zhang21阅读 3,649评论 0 28
  • 这篇是Nginx安装配置PHP(FastCGI)环境的教程。Nginx不支持对外部程序的直接调用或者解析,所有的外...
    SkTj阅读 3,098评论 2 20
  • Page 1:nginx 服务器安装及配置文件详解 CentOS 6.2 x86_64 安装 nginx 1.1 ...
    xiaojianxu阅读 8,542评论 1 41
  • 1.ngnix介绍 ngnix www服务软件 俄罗斯人开发 开源 性能很高 本身是一款静态WWW软件 静态小文件...
    逗比punk阅读 2,099评论 1 6
  • Nginx简介 解决基于进程模型产生的C10K问题,请求时即使无状态连接如web服务都无法达到并发响应量级一万的现...
    魏镇坪阅读 2,007评论 0 9