美文网首页
day44 Nginx Web服务应用

day44 Nginx Web服务应用

作者: 藏鋒1013 | 来源:发表于2019-04-30 17:49 被阅读0次

一、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       #启动命令。

相关文章

网友评论

      本文标题:day44 Nginx Web服务应用

      本文链接:https://www.haomeiwen.com/subject/mjlvnqtx.html