一、认识nginx
常用的web服务有Apache、IIS(windows系统)、Lighttpd、Tomcat、Nginx等。Nginx是一个开源的,支持高性能、高并发的www服务和代理服务软件。它是由俄罗斯人Igor Sysoev开发的,最初被应用在俄罗斯的大型网站WWW.rambler.ru上。后来作者讲源码以类似BSD许可证的形式开源出来供全球使用。
Nginx因具有高并发(特别擅长于静态资源)、占用系统资源少等特性,且功能丰富而逐渐流行起来
二、nginx功能应用
- 做web服务软件:Nginx是一个支持高性能、高并发的web服务软件,它具有很多优秀的特性,作为web服务器,与Apache相比,Nginx能够支持更多的并发连接访问,但占用的资源却很少,效率更高,在功能上也强大了很多,几乎不逊色与Apache
- 反向代理或负载均衡服务:在方向代理或负载均衡服务方面,Nginx可以作为web服务、PHP等动态服务及Memcached等缓存的代理服务器,它具有类似专业反向代理软件(如Haproxy)的功能,同时也是一个优秀的邮件代理服务软件(最早开发这个产品的目的之一就是作为邮件代理服务),但是Nginx的代理功能还是相对简单了些,特别是不支持TCP的代理(Nginx1.90以上的版本已支持TCP代理)
- 前端业务数据缓存服务:在web缓存服务方便,Nginx可通过自身的proxy_cache模块实现类Squid等专业缓存软件的功能。
特点及优势:
支持高并发:能支持几万并发连接(特别是静态小文件业务环境)
- 资源消耗少:在3万并发连接下,开启10个Nginx线程消耗的内存不到200MB
- 可以做HTTP反向代理及加速缓存,即负载均衡功能,内置对RS(real server)节点服务器健康检查功能,这相当于专业的Haproxy软件或LVS的功能
- 具备Squid等专业缓存软件等的缓存功能
- 支持异步网络I/O事件模型epoll(linux 2.6)
注:
大并发写操作:先写内存,再将内存数据存储到硬盘中---保证访问效率
大并发读操作:先写磁盘,再将磁盘数据存储到内存中---保证数据安全
总结:高并发→资源消耗少→功能多样(web、负载均衡、支持缓存)→通讯模型先进(epoll)
三、安装编译安装nginx
本机环境:
[root@web ~]# cat /etc/redhat-release CentOS release 6.9 (Final) [root@web ~]# uname -r 2.6.32-696.el6.x86_64
第一里程碑:安装nginx所需的(pcre-devel openssl-devel)库
[root@web ~]# yum install –y pcre-devel openssl-devel
第二里程碑:下载安装nginx
#下载软件包 Wget http://110.96.192.8:83/1Q2W3E4R5T6Y7U8I9O0P1Z2X3C4V5B/mirrors.sohu.com/nginx/nginx-1.10.2.tar.gz
#解压 tar zxf nginx-1.10.2.tar.gz useradd –s /sbin/nologin –M www #创建用户 cd ../nginx-1.10.2/ #进入解压后的目录
#编译并安装 ./configure --prefix=/usr/local/nginx-1.10.2 --user=www --group=www --with-http_stub_status_module --with-http_ssl_module Make && make install 创建软连接 ln -s /usr/local/nginx-1.10.2/ /usr/local/nginx #方便后期使用或升级版本
注:本次下载使用的是搜狐镜像源,可以到官方镜像源下载。
Nginx官方网站:http://nginx.org/download/nginx-1.10.2.tar.gz
搜狐镜像源:http://mirrors.sohu.com/nginx/
第三里程碑:检查并启动服务
#检查安装情况
[root@web ~]# /usr/local/nginx/sbin/nginx -V nginx version: nginx/1.10.2 built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC) built with OpenSSL 1.0.1e-fips 11 Feb 2013 TLS SNI support enabled configure arguments: --user=www --group=www --prefix=/usr/local/nginx-1.10.2/ --with-http_stub_status_module --with-http_ssl_module
#启动服务:
[root@web ~]# /usr/local/nginx/sbin/nginx
#测试访问
直接访问服务器IP,会显示nginx的页面。
第四里程碑:nginx相关启动参数
[root@web ~]# /usr/local/nginx/sbin/nginx -h nginx version: nginx/1.10.2 Usage: nginx [-?hvVtTq] [-s signal] [-c filename] [-p prefix] [-g directives] Options: -?,-h : this help -v : show version and exit -V : show version and configure options then exit -t : test configuration and exit -T : test configuration, dump it and exit -q : suppress non-error messages during configuration testing -s signal : send signal to a master process: stop, quit, reopen, reload -p prefix : set prefix path (default: /usr/local/nginx-1.10.2//) -c filename : set configuration file (default: conf/nginx.conf) -g directives : set global directives out of configuration file
四、nginx程序目录结构及配置文件
1、nginx目录结构
[root@web local]# tree -L 1 nginx nginx ├── conf <-软件配置文件保存目录(fastcgi、scgi、uwsgi等) ├── html <-网站站点目录 ├── logs <-日志文件保存目录 └── sbin <-Nginx命令保存目录
2、nginx配置文件
Conf文件夹中包含以下两个文件: nginx.conf <- nginx程序的主配置文件 nginx.conf.default <- nginx配置备份文件
3、配置文件web服务常用参数
[root@web conf]# egrep -v "#|^$" nginx.conf.default #去掉包含#号和空行的内容 worker_processes 1; #worker进程的数量 events { #事件区块开始 worker_connections 1024; #每个worker进程支持的最大连接数 } #事件区块结束 http { #HTTP区块开始 include mime.types; #nginx支持的媒体类型库文件 default_type local/octet-stream; #默认的媒体类型 sendfile on; #开启高效传输模式 keepalive_timeout 65; #连接超时 server { #第一个server区块开始,表示一个独立的虚拟主机站点 listen 80; #提供服务的端口,默认80 server_name localhost; #提供服务的域名主机名 location / { #第一个location区块开始 root html; #站点的根目录,相当于nginx的安装目录 index index.html index.htm; #默认的首页文件,多个空格分开 } #第一个localtion区块结果 error_page 500 502 503 504 /50x.html; #出现对应的http状态码时,使用50x.html回应客户 location = /50x.html { #location区块开始,访问50x.html root html; #指定对应的站点目录为html } } } #HTTP区块结束