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